
    xKg                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
mZ d dlmZmZmZ d dlmZmZmZmZ d dlZ edd      Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Z G d de      Z  G d de      Z! G d de!e      Z" G d de!      Z# G d de#e      Z$ G d de$      Z% G d de#e      Z& G d d e'      Z( G d! d"e(e      Z) G d# d$e)      Z* G d% d&e*      Z+ G d' d(e(e      Z, G d) d*e       Z- G d+ d,e       Z. G d- d.e      Z/ G d/ d0e       Z0 G d1 d2e      Z1 G d3 d4ee       Z2 G d5 d6ee      Z3 ejh                   e5ed7      d8       G d9 d:ee             Z6d; Z7e8d<k(  r ejr                          yy)=    N)TypingError)njit)typesutilsconfig)MemoryLeakMixinTestCasetagskip_if_32bitT)_nrtnogilc                 2    t        j                  | ||f      S Nnpconcatenateabcs      ^/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_dyn_array.pynp_concatenate1r      s    >>1a)$$    c                 6    t        j                  | ||f|      S Naxisr   r   r   r   r   s       r   np_concatenate2r      s    >>1a)$//r   c                 2    t        j                  | ||f      S r   r   stackr   s      r   	np_stack1r#      s    88Q1Ir   c                 6    t        j                  | ||f|      S r   r!   r   s       r   	np_stack2r%      s    88Q1ID))r   c                 2    t        j                  | ||f      S r   )r   hstackr   s      r   	np_hstackr(          99aAYr   c                 2    t        j                  | ||f      S r   )r   vstackr   s      r   	np_vstackr,   "   r)   r   c                 2    t        j                  | ||f      S r   )r   	row_stackr   s      r   np_row_stackr/   %   s    <<Aq	""r   c                 2    t        j                  | ||f      S r   )r   dstackr   s      r   	np_dstackr2   (   r)   r   c                 2    t        j                  | ||f      S r   )r   column_stackr   s      r   np_column_stackr5   +   s    ??Aq!9%%r   c                       e Zd ZddZy)BaseTestc                 ~   t        |      }|D ]  } || } || }| j                  |j                  |j                         | j                  |j                  |j                         | j	                  ||       |r!t
        j                  j                  ||       t
        j                  j                  ||        y r   )	nrtjitassertEqualsizedtypeassertStridesEqualr   testingassert_equalassert_allclose)selfpyfuncargslistexactcfuncargsexpectedrets           r   check_outputszBaseTest.check_outputs1   s    vDt}H,CSXXx}}5SYY7##C2

''#6

**8S9 r   N)T)__name__
__module____qualname__rI    r   r   r7   r7   /   s    :r   r7   c                       e Zd Zd Zy)NrtRefCtTestc                 P    | j                  |j                  j                  |       y r   )r:   baserefcount)rA   arrexpects      r   assert_array_nrt_refctz#NrtRefCtTest.assert_array_nrt_refct@   s    **F3r   N)rJ   rK   rL   rU   rM   r   r   rO   rO   ?   s    4r   rO   c                   |    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ed        Zd Zd Zd Zd Zy)TestDynArrayc                    t         d        } |       }| j                  |d       t        j                  j	                  d|       | j                  |j                  d       | j                  |j                  d       | j                  |j                  t        j                  t        j                               | j                  |j                  d       |j                  d       t        j                  j	                  d|       ~y )Nc                  :    t        j                  d      } d| d<   | S )NrM   *   r   emptyrS   s    r   fooz'TestDynArray.test_empty_0d.<locals>.fooG   s    ((2,CCGJr      rZ   rM   {   )r9   rU   r   r>   r?   r:   r;   shaper<   float64stridesfill)rA   r^   rS   s      r   test_empty_0dzTestDynArray.test_empty_0dF   s    		 
	
 e##C+


C(1%B'BHHRZZ$89b)


S)r   c                    t         d        }d} ||      }| j                  |d       t        j                  j	                  t        j
                  |      |       | j                  |j                  |       | j                  |j                  |f       | j                  |j                  t        j                  t        j                               | j                  |j                  t        j                  t        j                        j                  f       |j                  d       t        j                  j	                  d|       ~y )Nc                 Z    t        j                  |       }t        |       D ]  }|||<   	 |S r   )r   r\   range)nrS   is      r   r^   z'TestDynArray.test_empty_1d.<locals>.fooY   s-    ((1+C1XA  Jr      r_   r`   )r9   rU   r   r>   r?   aranger:   r;   ra   r<   rb   rc   itemsizerd   )rA   r^   ri   rS   s       r   test_empty_1dzTestDynArray.test_empty_1dX   s    		 
	 !f##C+


		!c21%QD)BHHRZZ$89rxx

';'D'D&FG


S)r   c                    d }t        |      }d}d} |||      } |||      }| j                  |d       t        j                  j	                  ||       | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j                  |j                         ~y )Nc                     t        j                  | |ft         j                        }t        |       D ]  }t        |      D ]  }||z   |||f<     |S r   r   r\   int32rh   )mri   rS   rj   js        r   rB   z*TestDynArray.test_empty_2d.<locals>.pyfuncn   sN    ((Aq6288,C1XqA !AC1I "  Jr      rk   r_   	r9   rU   r   r>   r?   r:   r;   ra   rc   )rA   rB   rE   rs   ri   expected_arrgot_arrs          r   test_empty_2dzTestDynArray.test_empty_2dm   s    	 va|1+##GQ/


g6**GLL9++W]];--w?r   c                    d }t        |      }d}d}d} ||||      } ||||      }| j                  |d       t        j                  j	                  ||       | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j                  |j                         ~y )Nc                     t        j                  | ||ft         j                        }t        |       D ]0  }t        |      D ]   }t        |      D ]  }||z   |z   ||||f<    " 2 |S r   rq   )rs   ri   prS   rj   rt   ks          r   rB   z*TestDynArray.test_empty_3d.<locals>.pyfunc   sd    ((Aq!9bhh/C1XqA"1X'(1uqyAq!G & " 
 Jr   ru   rk      r_   rv   rA   rB   rE   rs   ri   r|   rw   rx   s           r   test_empty_3dzTestDynArray.test_empty_3d   s    	 vaA1a.##GQ/


g6**GLL9++W]];--w?r   c                    d }t        |      }d}d}d} ||||      } ||||      }| j                  |d       t        j                  j	                  ||       | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j                  |j                         ~y )Nc                     t        j                  | |ft         j                        }t        |       D ]  }t        |      D ]  }||z   |||f<     ||   S r   rq   )rs   ri   r|   rS   rj   rt   s         r   rB   z1TestDynArray.test_empty_2d_sliced.<locals>.pyfunc   sR    ((Aq6288,C1XqA !AC1I "  q6Mr   ru   rk   r~   r_   rv   r   s           r   test_empty_2d_slicedz!TestDynArray.test_empty_2d_sliced   s    	 vaA1a.##GQ/


g6**GLL9++W]];--w?r   c                 2   t        j                  dt         j                        t        j                        }fd}t        |      } |       }| j                  |dz   t        j                               t         j                  j                  |       t         j                  j                  t        j                  dt         j                               t         j                  j                  |t        j                  dt         j                               ~t        j                          | j                  |dz   t        j                               ~t        j                          | j                  |t        j                               y )Nru   r<   c                       S r   rM   ys   r   return_external_arrayzDTestDynArray.test_return_global_array.<locals>.return_external_array   s    Hr   r_   )r   onesfloat32sysgetrefcountr9   r:   r>   r?   gccollect)rA   	initrefctr   rE   outr   s        @r   test_return_global_arrayz%TestDynArray.test_return_global_array   s   GGARZZ(OOA&		 ,-g 	Q(:;


3'


2771BJJ#?@


RWWQbjj%AB


Q(:;


COOA$67r   c                 
   t        j                  dt         j                        fd}t        |      } |       }| j	                  |j
                         dd  }t         j                  j                  ||       t         j                  j                  |t        j                  dt         j                               t         j                  j                  |t        j                  dt         j                               y )Nru   r   c                       dd  S Nr~   rM   r   s   r   r   zKTestDynArray.test_return_global_array_sliced.<locals>.return_external_array   s    QR5Lr   r~   )r   r   r   r9   assertIsNonerQ   r>   r?   )rA   r   rE   r   yyr   s        @r   test_return_global_array_slicedz,TestDynArray.test_return_global_array_sliced   s    GGARZZ(	 ,-g#((#qrU


C(


BGGARZZ$@A


RWWQbjj%ABr   c                 R   d }t        j                  dt         j                        }t        |      } ||      } ||      }t         j                  j                  ||       t         j                  j                  ||       | j                  ||       | j                  ||       y )Nc                     | S r   rM   r   s    r   rB   z4TestDynArray.test_array_pass_through.<locals>.pyfunc   s    Hr   ru   r   )r   r   r   r9   r>   r?   assertIs)rA   rB   rS   rE   rG   gots         r   test_array_pass_throughz$TestDynArray.test_array_pass_through   s|    	 ggarzz*v:Sk


#.


#.h$h$r   c                    d }t        j                  dt         j                        }t        j                  |      }t        |      } ||      }| j                  |dz   t        j                  |              ||      }| j                  |dz   t        j                  |             t         j                  j                  |||j                  dz            t         j                  j                  ||       ~| j                  |dz   t        j                  |             ~| j                  |t        j                  |             y )Nc                 &    | | j                   dz  d  S r   )r;   r   s    r   rB   z;TestDynArray.test_array_pass_through_sliced.<locals>.pyfunc   s    QVVq[\?"r   ru   r   r_   r~   )
r   r   r   r   r   r9   r:   r>   r?   r;   )rA   rB   rS   r   rE   r   rG   s          r   test_array_pass_through_slicedz+TestDynArray.test_array_pass_through_sliced   s    	# ggarzz*OOC(	vCjQ(<=#;Q(<=


#chh!m*<=


#.Q(<=COOC$89r   c                    d }t        |      }t        j                  j                  d      }t        j                  j                  d      }t        j                  j	                   |||       |||             | j                   |||      d       t        j                  j                  d      j                  dd      }t        j                  j                  d      j                  dd      }t        j                  j	                   |||       |||             | j                   |||      d       t        j                  j                  d      j                  ddd      }t        j                  j                  d      j                  ddd      }t        j                  j	                   |||       |||             | j                   |||      d       y )Nc                 r    t        j                  | j                        }t        j                  | ||       |S r   )r   r\   ra   add)r   r   r   s      r   rB   z=TestDynArray.test_ufunc_with_allocated_output.<locals>.pyfunc  s)    ((177#CFF1aJr   
   r_   r~      F      )r9   r   randomr>   r?   rU   reshape)rA   rB   rE   arr_aarr_bs        r    test_ufunc_with_allocated_outputz-TestDynArray.test_ufunc_with_allocated_output  s   	
 v 		  $		  $


ue 4 %eU 3	5 	##E%$7; 		  $,,Q2		  $,,Q2


ue 4 %eU 3	5 	##E%$7; 		  $,,Q15		  $,,Q15


ue 4 %eU 3	5 	##E%$7;r   c                 J   d }t        |      d}t        j                  j                  dd|      }|j	                         }t        j
                  j                   ||       |             t        j
                  j                  ||       g }g }g }fd}t        d      D ]  }	t        j                  j                  dd|      }t        j                  |      }
t        j                  |||
fdj                  |	            }|j                  |       |j                  |       |j                  |
        |D ]  }|j                           |D ]  }|j                           t        ||      D ]+  \  }}
t        j
                  j                   ||      |
       - y)	z
        This test exercises the array allocation in multithreaded usecase.
        This stress the freelist inside NRT.
        c                    t        j                  | j                        }t        |j                        D ]  }d||<   	 t        | d         D ]p  }t        j                  | j                        }t        |j                        D ]
  }| |   ||<    t        |j                        D ]  }||xx   ||   |z   z  cc<    r |S )Nr   r   r\   r;   rh   )inpr   rj   tmprt   s        r   rB   z/TestDynArray.test_allocation_mt.<locals>.pyfunc.  s    ((388$C 388_A % 3q6]hhsxx(sxxA VCF ) sxxAFc!fqj(F ) # Jr   r   r_   c                      |       |d d  y r   rM   )r   r   rE   s     r   wrappedz0TestDynArray.test_allocation_mt.<locals>.wrappedO  s    3ZCFr   d   	worker{0}targetrF   nameN)r9   r   r   randintcopyr>   r?   rh   
empty_like	threadingThreadformatappendstartjoinzip)rA   rB   r;   rS   
frozen_arrworkersinputsoutputsr   rj   r   threadr   rE   s                @r   test_allocation_mtzTestDynArray.test_allocation_mt(  s\   	& vii2t,XXZ



sU3Z8



C0	  sA))##Ar40C--$C%%W,/:+6+=+=a+@BF NN6"MM#NN3  FLLN  FKKM  FG,HCJJ##F3K5 -r   c                    d }t        |      d}t        j                  |t              }t	        j
                  |      }t        j                  d      } |||      }t        j                  j                  | ||             ~| j                  |t	        j
                  |             g }g }g }	fd}
t        d      D ]  }t        j                  |      }t        j                  d      }t        j                  |
|||fdj                  |            }|j!                  |       |j!                  |       |	j!                  |        |D ]  }|j#                           |D ]  }|j%                           t'        |	|      D ],  \  }}t        j                  j                   |||      |       . ~~| j                  |t	        j
                  |             y	)
zE
        This test exercises the refct in multithreaded code
        c                     t        j                  |j                        }t        |j                        D ]  }||   dz   ||<    t        |       D ]  }||}} |S Nr_   r   )ri   r   r   rj   s       r   rB   z*TestDynArray.test_refct_mt.<locals>.pyfuncn  sU    ((388$C388_Q!A % 1XS Jr   r   r   i  c                      | |      |d d  y r   rM   )ri   inputr   rE   s      r   r   z+TestDynArray.test_refct_mt.<locals>.wrapped  s    1e_CFr   r   r   r   N)r9   r   rl   floatr   r   r   	randranger>   r?   r:   rh   r\   r   r   r   r   r   r   r   )rA   rB   r;   r   expected_refctswapctrG   r   r   swapctsr   rj   r   r   rE   s                 @r   test_refct_mtzTestDynArray.test_refct_mti  s   
	 v		$e,/!!$'&%(


%*>?)?@	% sA((4.C%%d+F%%W,2E3+?+6+=+=a+@BF NN6"NN3NN6"  FLLN  FKKM  w0KFCJJ##F65$93? 1 W)?@r   c                 &   t         d        }| j                          | j                  t              5 } |t        j
                  j                  dz  dz         d d d        | j                  dt        j                               y # 1 sw Y   /xY w)Nc                 .    t        j                  |        y r   r[   )xs    r   r^   z1TestDynArray.test_invalid_size_array.<locals>.foo  s    HHQKr      r~   zAllocation failed)
r   disable_leak_checkassertRaisesMemoryErrorr   size_tmaxvalassertInstr	exception)rA   r^   raisess      r   test_invalid_size_arrayz$TestDynArray.test_invalid_size_array  sz     
	 
	 	!{+v##q(A-. , 	)3v/?/?+@A ,+s   'BBc                 L   d }t        |      }t        j                  j                  d      }t        j                  j                  d      }d}t        j                  |      t        j                  |      f} ||||       ||||      }}| j                  |d   j                         | j                  |d   j                         t        j                  j                  ||       ~~| j                  |t        j                  |      t        j                  |      f       y )Nc                 2    t        |      D ]  }|| }}  | |fS )z5Swap array x and y for t number of times
            rh   r   r   trj   s       r   rB   z&TestDynArray.test_swap.<locals>.pyfunc  s&     1X!1  a4Kr   r   r   r_   )
r9   r   r   r   r   r   rQ   r>   r?   r:   )	rA   rB   rE   r   r   r   r   rT   r   s	            r   	test_swapzTestDynArray.test_swap  s    	 vIIS!IIS!OOA&(::	Q1ouQ1~#a&++&#a&++&


,CS__Q%79K$LMr   c                 :   d }t        |      }t        j                  j                  d      }t        j                  |      } ||      \  }} ||      \  }}| j                  ||       | j                  ||       t        j                  j                  ||       t        j                  j                  ||       ~~| j                  |t        j                  |             | j                  t        j                  |      t        j                  |             y )Nc                     t        j                  | j                        }t        |j                        D ]  }| |   dz   ||<    | |fS r   r   )r   r   rj   s      r   rB   z7TestDynArray.test_return_tuple_of_array.<locals>.pyfunc  s@     A166]tax! #a4Kr   r   )	r9   r   r   r   r   r   r>   r?   r:   )	rA   rB   rE   r   r   
expected_x
expected_ygot_xgot_ys	            r   test_return_tuple_of_arrayz'TestDynArray.test_return_tuple_of_array  s    	 vIIQOOA&	!'
JQxua$a



E2



E2COOA$674cooe6LMr   c                    d }t        |      }t        j                  j                  d      } ||      \  }} ||      \  }}t        j                  j	                  ||       t        j                  j	                  ||       | j                  dt        j                  |             | j                  dt        j                  |             y )Nc                     t        j                  | j                        }t        |j                        D ]  }| |   dz   ||<    ||f}|S r   r   )r   r   rj   r   s       r   rB   z?TestDynArray.test_return_tuple_of_array_created.<locals>.pyfunc  sE     A166]tax! #Q$CJr   r   r~   )r9   r   r   r>   r?   r:   r   r   )rA   rB   rE   r   r   r   r   r   s           r   "test_return_tuple_of_array_createdz/TestDynArray.test_return_tuple_of_array_created  s    	 vIIQ!'
JQxu



E2



E2COOE23COOE23r   c                    t         d        fd}t        |      }t        j                  d      }t        j                  |      }| j                  |t        j                   ||                   | j                  |t        j                   ||                   | j                  |t        j                  |             y)z_
        Dispatcher returns a new reference.
        It need to workaround it for now.
        c                     | S r   rM   )r   s    r   innerz7TestDynArray.test_issue_with_return_leak.<locals>.inner   s    Jr   c                      |       S r   rM   )r   r   s    r   rB   z8TestDynArray.test_issue_with_return_leak.<locals>.pyfunc  s    8Or   r   N)r9   r   rl   r   r   r:   )rA   rB   rE   rS   	old_refctr   s        @r   test_issue_with_return_leakz(TestDynArray.test_issue_with_return_leak  s    
 
	 
		 viimOOC(	COOF3K$@ACOOE#J$?@COOC$89r   N)rJ   rK   rL   re   rn   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rM   r   r   rW   rW   D   so    $*.2086C%:,"<H?6B;Az B BN4N.4*:r   rW   c                   $    e Zd Zd Zd Zd Zd Zy)ConstructorBaseTestc                 \   t        |      } |       } |       }| j                  |d       | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j
                  |j
                         | j                  |j                  |j                         | j                  ||       t        j                  |      }|j                  d       |j                  d       t        j                  j                  ||       y )Nr_   r`   )r9   rU   r:   r;   ra   r<   rc   check_result_valuer   r   rd   r>   r?   )rA   rB   rE   rG   rH   s        r   check_0dzConstructorBaseTest.check_0d  s    v8g##C+8==1HNN3HNN3h&6&67X.==%c


X.r   c                    t        |      }d} ||      } ||      }| j                  |d       | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j
                  |j
                         | j                  |j                  |j                         | j                  ||       t        j                  |      }|j                  d       |j                  d       t        j                  j                  ||       | j                  t              5 } |d       d d d        | j                  t        j                         d       y # 1 sw Y   /xY w)Nrk   r_   r`   negative dimensions not allowedr9   rU   r:   r;   ra   r<   rc   r   r   r   rd   r>   r?   r   
ValueErrorr   r   )rA   rB   rE   ri   rG   rH   cms          r   check_1dzConstructorBaseTest.check_1d#  s   v!9Ah##C+8==1HNN3HNN3h&6&67X.==%c


X.z*b"I +R\\*,MN +*s   	E==Fc                    t        |      }d\  }} |||      } |||      }| j                  |d       | j                  |j                  |j                         | j                  |j                  |j                         | j                  |j
                  |j
                         | j                  |j                  |j                         | j                  ||       t        j                  |      }|j                  d       |j                  d       t        j                  j                  ||       | j                  t              5 } |dd       d d d        | j                  t        j                         d       y # 1 sw Y   /xY w)Nr~   rk   r_   r`   r~   r   r   r   )rA   rB   rE   rs   ri   rG   rH   r  s           r   check_2dzConstructorBaseTest.check_2d8  s&   v1!Q<Aqk##C+8==1HNN3HNN3h&6&67X.==%c


X.z*b!RL +R\\*,MN +*s   
FFc                     t        |      }| j                  t              5 } |        ddd       | j                  dt	        j
                               y# 1 sw Y   /xY w)zAChecks that pyfunc will error, not segfaulting due to array size.Nzarray is too big)r9   r   r  r   r   r   )rA   rB   rE   es       r   check_alloc_sizez$ConstructorBaseTest.check_alloc_sizeM  sI    vz*aG +	
 +*s   AA N)rJ   rK   rL   r   r  r  r	  rM   r   r   r   r     s    / O*O*
r   r   c                   ~     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Z xZS )TestNdZerosc                 T    t         t        |           t        j                  | _        y r   )superr  setUpr   zerosrB   rA   	__class__s    r   r  zTestNdZeros.setUpZ  s    k4&(hhr   c                 D    t         j                  j                  ||       y r   r   r>   r?   rA   rH   rG   s      r   r   zTestNdZeros.check_result_value^      


X.r   c                 J    | j                   fd}| j                  |       y )Nc                        d      S NrM   rM   )rB   s   r   funcz!TestNdZeros.test_0d.<locals>.funcc  s    ":r   )rB   r   rA   r  rB   s     @r   test_0dzTestNdZeros.test_0da  s    	dr   c                 J    | j                   fd}| j                  |       y )Nc                      |       S r   rM   ri   rB   s    r   r  z!TestNdZeros.test_1d.<locals>.funci  s    !9r   rB   r  r  s     @r   test_1dzTestNdZeros.test_1dg  s    	dr   c                 J    | j                   fd}| j                  |       y )Nc                 2     | t         j                        S r   r   rr   r  s    r   r  z'TestNdZeros.test_1d_dtype.<locals>.funco  s    !RXX&&r   r  r  s     @r   test_1d_dtypezTestNdZeros.test_1d_dtypem  s    	'dr   c                 x    | j                   t        j                  d      fd}| j                  |       y )Nrr   c                      |       S r   rM   ri   _dtyperB   s    r   r  z0TestNdZeros.test_1d_dtype_instance.<locals>.funcw      !V$$r   )rB   r   r<   r  rA   r  r(  rB   s     @@r   test_1d_dtype_instancez"TestNdZeros.test_1d_dtype_instances  s+    '"	%dr   c                 ~    | j                   dfd}| j                  |       fd}| j                  |       y )Nrr   c                      |       S r   rM   r'  s    r   r  z+TestNdZeros.test_1d_dtype_str.<locals>.func~  r)  r   c                      | d      S )N
complex128rM   r  s    r   r  z+TestNdZeros.test_1d_dtype_str.<locals>.func  s    !\**r   r  r*  s     @@r   test_1d_dtype_strzTestNdZeros.test_1d_dtype_str{  s3    	%d	+dr   c                 ~    | j                   dfd}| j                  |       fd}| j                  |       y )Ni4c                      |       S r   rM   r'  s    r   r  z@TestNdZeros.test_1d_dtype_str_alternative_spelling.<locals>.func  r)  r   c                      | d      S )Nc8rM   r  s    r   r  z@TestNdZeros.test_1d_dtype_str_alternative_spelling.<locals>.func  s    !T?"r   r  r*  s     @@r   &test_1d_dtype_str_alternative_spellingz2TestNdZeros.test_1d_dtype_str_alternative_spelling  s3    	%d	#dr   c                 R    | j                   dfd}| j                  |       y )Nzi4, (2,3)f8c                      |       S r   rM   r'  s    r   r  z<TestNdZeros.test_1d_dtype_str_structured_dtype.<locals>.func  r)  r   r  r*  s     @@r   "test_1d_dtype_str_structured_dtypez.TestNdZeros.test_1d_dtype_str_structured_dtype  s"    	%dr   c                 "   | j                   t        fd       }| j                  t              5 } |dd       d d d        t	        j
                        }d| j                   j                   d}| j                  ||       y # 1 sw Y   KxY w)Nc                      | |      S r   rM   ri   dtrB   s     r   r  z5TestNdZeros.test_1d_dtype_non_const_str.<locals>.func      !R= r   r   rr   If np.0 dtype is a string it must be a string constant.)rB   r   r   r   r   r   rJ   r   rA   r  r   excstrmsgrB   s        @r   test_1d_dtype_non_const_strz'TestNdZeros.test_1d_dtype_non_const_str  s    		! 
	! {+vG , V%%&,,- ." "c6" ,+s   
BBc                     | j                   t        fd       }| j                  t              5 } |d       d d d        t	        j
                        }| j                  d|       y # 1 sw Y   1xY w)Nc                      | d      S NABCDEFrM   r  s    r   r  z3TestNdZeros.test_1d_dtype_invalid_str.<locals>.func      !X&&r   r   'Invalid NumPy dtype specified: 'ABCDEF')rB   r   r   r   r   r   r   rA   r  r   rB  rB   s       @r   test_1d_dtype_invalid_strz%TestNdZeros.test_1d_dtype_invalid_str  sf    		' 
	' {+vG , V%%&?H	 ,+s   	A**A3c                 J    | j                   fd}| j                  |       y )Nc                      | |f      S r   rM   rs   ri   rB   s     r   r  z!TestNdZeros.test_2d.<locals>.func  s    1a&>!r   rB   r  r  s     @r   test_2dzTestNdZeros.test_2d  s    	"dr   c                 @   | j                   fd}| j                  |       fd}| j                  |       t        j                  rIt	        fd      }| j                  t              5   |t        j                  d      d       d d d        y y # 1 sw Y   y xY w)Nc                 d     t        j                  |       t        j                  |      f      S r   )r   int16rr   rO  s     r   func1z/TestNdZeros.test_2d_shape_dtypes.<locals>.func1  s#    288A;455r   c                 d     t        j                  |       t        j                  |      f      S r   )r   int64int8rO  s     r   func2z/TestNdZeros.test_2d_shape_dtypes.<locals>.func2  s#    288A;
344r   c                      | |f      S r   rM   rO  s     r   <lambda>z2TestNdZeros.test_2d_shape_dtypes.<locals>.<lambda>  s    1vr           r_   )	rB   r  r   	IS_32BITSr9   r   r  r   rW  )rA   rU  rY  rE   rB   s       @r   test_2d_shape_dtypesz TestNdZeros.test_2d_shape_dtypes  sw    	6e	5e67E"":.bhh}-q1 /. ..s   -BBc                 J    | j                   fd}| j                  |       y )Nc                 8     | |ft         j                        S Nr   )r   	complex64rO  s     r   r  z-TestNdZeros.test_2d_dtype_kwarg.<locals>.func  s    1a&55r   rP  r  s     @r   test_2d_dtype_kwargzTestNdZeros.test_2d_dtype_kwarg  s    	6dr   c                 J    | j                   fd}| j                  |       y )Nc                      | |fd      S )Nrb  r   rM   rO  s     r   r  z1TestNdZeros.test_2d_dtype_str_kwarg.<locals>.func  s    1a&44r   rP  r  s     @r   test_2d_dtype_str_kwargz#TestNdZeros.test_2d_dtype_str_kwarg  s    	5dr   c                 J    | j                   fd}| j                  |       y )Nc                      | |fd      S )Nr5  r   rM   rO  s     r   r  zFTestNdZeros.test_2d_dtype_str_kwarg_alternative_spelling.<locals>.func  s    1a&--r   rP  r  s     @r   ,test_2d_dtype_str_kwarg_alternative_spellingz8TestNdZeros.test_2d_dtype_str_kwarg_alternative_spelling  s    	.dr   c                    | j                   t        j                  j                  }fd}| j	                   |d|dz
  z  t
        j                               | j	                   |d|dz
  z  dft
        j                               y )Nc                       fdS )Nc                              S r   rM   )r<   rB   ra   s   r   r[  z?TestNdZeros.test_alloc_size.<locals>.gen_func.<locals>.<lambda>  s    F5%0r   rM   )ra   r<   rB   s   ``r   gen_funcz-TestNdZeros.test_alloc_size.<locals>.gen_func  s	    00r   r_   r~   r   @   )rB   r   intpbitwidthr	  r   )rA   widthrm  rB   s      @r   test_alloc_sizezTestNdZeros.test_alloc_size  si    

##	1 	hqEAI~rww?@hUQY';RWWEFr   )rJ   rK   rL   r  r   r  r   r$  r+  r0  r6  r9  rD  rL  rQ  r^  rc  rf  ri  rr  __classcell__r  s   @r   r  r  X  sZ    /	
#I2 Gr   r  c                   F     e Zd Z fdZej
                   fd       Z xZS )
TestNdOnesc                 T    t         t        |           t        j                  | _        y r   )r  rv  r  r   r   rB   r  s    r   r  zTestNdOnes.setUp  s    j$%'ggr   c                 "    t         |           y r   )r  r9  r  s    r   r9  z-TestNdOnes.test_1d_dtype_str_structured_dtype  s    24r   )rJ   rK   rL   r  unittestexpectedFailurer9  rs  rt  s   @r   rv  rv    s"     5 5r   rv  c                   `    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y)
TestNdFullc                 D    t         j                  j                  ||       y r   r  r  s      r   r   zTestNdFull.check_result_value  r  r   c                 ,    d }| j                  |       y )Nc                  .    t        j                  dd      S )NrM         @r   fullrM   r   r   r  z TestNdFull.test_0d.<locals>.func  s    772s##r   )r   rA   r  s     r   r  zTestNdFull.test_0d  s    	$dr   c                 ,    d }| j                  |       y )Nc                 .    t        j                  | d      S Nr  r  ri   s    r   r  z TestNdFull.test_1d.<locals>.func  s    771c?"r   r  r  s     r   r   zTestNdFull.test_1d  s    	#dr   c                 ,    d }| j                  |       y )Nc                 L    t        j                  | dt         j                        S r  )r   r  bool_r  s    r   r  z&TestNdFull.test_1d_dtype.<locals>.func  s    771c288,,r   r  r  s     r   r$  zTestNdFull.test_1d_dtype  s    	-dr   c                 \    t        j                  d      fd}| j                  |       y )Nboolc                 2    t        j                  | d      S r  r  ri   r<   s    r   r  z/TestNdFull.test_1d_dtype_instance.<locals>.func
  s    771c5))r   )r   r<   r  rA   r  r<   s     @r   r+  z!TestNdFull.test_1d_dtype_instance  s"     	*dr   c                 ,    d }| j                  |       y )Nc                 0    t        j                  | dd      S Nr  r  r  r  s    r   r  z*TestNdFull.test_1d_dtype_str.<locals>.func  s    771c7++r   r  r  s     r   r0  zTestNdFull.test_1d_dtype_str  s    	,dr   c                 ,    d }| j                  |       y )Nc                 0    t        j                  | dd      S )Nr  ?r  r  s    r   r  z?TestNdFull.test_1d_dtype_str_alternative_spelling.<locals>.func  s    771c3''r   r  r  s     r   r6  z1TestNdFull.test_1d_dtype_str_alternative_spelling  s    	(dr   c                     t         d        }| j                  t              5 } |ddd       d d d        t        j                        }d}| j                  ||       y # 1 sw Y   3xY w)Nc                 0    t        j                  | ||      S r   r  )ri   fvr=  s      r   r  z4TestNdFull.test_1d_dtype_non_const_str.<locals>.func  s    771b"%%r   r   r  rr   z:If np.full dtype is a string it must be a string constant.r   r   r   r   r   r   rA   r  r   rB  rC  s        r   rD  z&TestNdFull.test_1d_dtype_non_const_str  sg    		& 
	& {+vsG$ , V%%&"c6" ,+s   AA(c                     t         d        }| j                  t              5 } |dd       d d d        t        j                        }| j                  d|       y # 1 sw Y   1xY w)Nc                 0    t        j                  | |d      S rG  r  )ri   r  s     r   r  z2TestNdFull.test_1d_dtype_invalid_str.<locals>.func)  s    771b(++r   r  r  rJ  r  rA   r  r   rB  s       r   rL  z$TestNdFull.test_1d_dtype_invalid_str'  s^    		, 
	, {+vsO , V%%&?H	 ,+s   
AA%c                 ,    d }| j                  |       y )Nc                 2    t        j                  | |fd      S r  r  rs   ri   s     r   r  z TestNdFull.test_2d.<locals>.func4  s    77Aq63''r   r  r  s     r   rQ  zTestNdFull.test_2d3  s    	(dr   c                 ,    d }| j                  |       y )Nc                 R    t        j                  | |fdt         j                        S )Ny      ?      @r   )r   r  rb  r  s     r   r  z,TestNdFull.test_2d_dtype_kwarg.<locals>.func9  s    77Aq682<<@@r   r  r  s     r   rc  zTestNdFull.test_2d_dtype_kwarg8  s    	Adr   c                 |    d }| j                  |       d }| j                  |       d }| j                  |       y )Nc                 X    t        j                  | |ft        j                  d            S r   )r   r  rr   r  s     r   r  z0TestNdFull.test_2d_dtype_from_type.<locals>.func?  s    77Aq6288A;//r   c                 X    t        j                  | |ft        j                  d            S r   )r   r  r/  r  s     r   r  z0TestNdFull.test_2d_dtype_from_type.<locals>.funcD  s     77Aq62==#344r   c                 R    t        j                  | |fdt         j                        S )Nr_   r   )r   r  rX  r  s     r   r  z0TestNdFull.test_2d_dtype_from_type.<locals>.funcI  s    77Aq61BGG44r   r  r  s     r   test_2d_dtype_from_typez"TestNdFull.test_2d_dtype_from_type=  s5    	0d	5d	5dr   c                    d }| j                  |       d }| j                  |       t        j                  rGt        d       }| j	                  t
              5   |t        j                  d      d       d d d        y y # 1 sw Y   y xY w)Nc                 ~    t        j                  t        j                  |       t        j                  |      fd      S r  )r   r  rT  rr   r  s     r   rU  z.TestNdFull.test_2d_shape_dtypes.<locals>.func1O  s(    77BHHQK!5s;;r   c                 ~    t        j                  t        j                  |       t        j                  |      fd      S r  )r   r  rW  rX  r  s     r   rY  z.TestNdFull.test_2d_shape_dtypes.<locals>.func2S  s(    77BHHQK4c::r   c                 2    t        j                  | |fd      S r  r  r  s     r   r[  z1TestNdFull.test_2d_shape_dtypes.<locals>.<lambda>X  s    A(<r   r\  r_   )r  r   r]  r9   r   r  r   rW  )rA   rU  rY  rE   s       r   r^  zTestNdFull.test_2d_shape_dtypesM  sm    	<e	;e<=E"":.bhh}-q1 /. ..s   BB
c                     t         j                  j                  }d }| j                   |d|dz
  z  d             | j                   |d|dz
  z  dfd             y )Nc                       fdS )Nc                  0    t        j                         S r   r  ra   values   r   r[  z>TestNdFull.test_alloc_size.<locals>.gen_func.<locals>.<lambda>_  s    BGGE51r   rM   r  s   ``r   rm  z,TestNdFull.test_alloc_size.<locals>.gen_func^  s	    11r   r_   r~   r   rn  )r   ro  rp  r	  )rA   rq  rm  s      r   rr  zTestNdFull.test_alloc_size\  sW    

##	2 	hqEAI~q9:hUQY';Q?@r   N)rJ   rK   rL   r   r  r   r$  r+  r0  r6  rD  rL  rQ  rc  r  r^  rr  rM   r   r   r|  r|    sJ    /



#
I

 2Ar   r|  c                       e Zd Zd Zd Zy)ConstructorLikeBaseTestc                     	 |j                  d       y # t        t        f$ r- d|j                  j                  z  }|j                  |       Y y w xY w)NrZ      x)rd   	TypeErrorr  r<   rm   )rA   rS   
fill_values      r   mutate_arrayz$ConstructorLikeBaseTest.mutate_arrayg  sF    	!HHRL:& 	!		 2 22JHHZ 	!s    9AAc                      fd}t        j                  ddd      j                  |      }t              dD ]  }|dk(  r|dd  j	                  d      }n|j	                  |      } ||       |j
                  dkD  r ||d d d          d	|j                  d
<    j                  t              5  d|d<   d d d         ||         ||d          y # 1 sw Y   xY w)Nc                     |       } |       }j                  |j                  |j                         j                  |j                  |j                         j                  ||       j	                  ||       j                  |       j                  |       t        j                  j                  ||       y r   )	r:   r;   r<   r=   r   r  r   r>   r?   )rS   rG   rH   rE   rB   rA   s      r   	check_arrz5ConstructorLikeBaseTest.check_like.<locals>.check_arrp  s    c{H*CSXXx}}5SYY7##C2##C2c"h'JJ##C2r   r   r      )r  r  r_   r~   rk   )rk   r_   r~   rM   rM   r   r~   F	WRITEABLEr_   )	r   linspaceastyper9   r   ndimflagsr   r  )rA   rB   r<   r  origra   rS   rE   s   ``     @r   
check_likez"ConstructorLikeBaseTest.check_likeo  s    
	3 {{1a#**51v:E{23i''+ll5)cNxx!|#cc(#%*CIIk""":.A /cN ;" 	$q' /.s   5CC"	N)rJ   rK   rL   r  r  rM   r   r   r  r  e  s    !!r   r  c                   `     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Z xZS )TestNdEmptyLikec                 T    t         t        |           t        j                  | _        y r   )r  r  r  r   r   rB   r  s    r   r  zTestNdEmptyLike.setUp      ot*,mmr   c                      y r   rM   r  s      r   r   z"TestNdEmptyLike.check_result_value  s    r   c                 h    | j                   fd}| j                  |t        j                         y )Nc                      |       S r   rM   rS   rB   s    r   r  z'TestNdEmptyLike.test_like.<locals>.func      #;r   rB   r  r   rb   r  s     @r   	test_likezTestNdEmptyLike.test_like  s#    	bjj)r   c                     t        j                  dt         j                  fdt         j                  fg      }| j                  fd}| j                  ||       y )Nr   r   c                      |       S r   rM   r  s    r   r  z2TestNdEmptyLike.test_like_structured.<locals>.func  r  r   )r   r<   rT  r   rB   r  )rA   r<   r  rB   s      @r   test_like_structuredz$TestNdEmptyLike.test_like_structured  sC    3/C+<=>	e$r   c                 h    | j                   fd}| j                  |t        j                         y )Nc                 2     | t         j                        S r   r#  r  s    r   r  z-TestNdEmptyLike.test_like_dtype.<locals>.func  s    #rxx((r   r  r  s     @r   test_like_dtypezTestNdEmptyLike.test_like_dtype  s#    	)bjj)r   c                     t        j                  d      | j                  fd}| j                  |t         j                         y )Nrr   c                      |       S r   rM   rS   r<   rB   s    r   r  z6TestNdEmptyLike.test_like_dtype_instance.<locals>.func      #u%%r   )r   r<   rB   r  rb   rA   r  r<   rB   s     @@r   test_like_dtype_instancez(TestNdEmptyLike.test_like_dtype_instance  s1    !	&bjj)r   c                     t        j                  dt         j                  fdt         j                  fg      | j                  fd}| j                  |t         j                         y )Nr   r   c                      |       S r   rM   r  s    r   r  z8TestNdEmptyLike.test_like_dtype_structured.<locals>.func  r  r   )r   r<   rT  r   rB   r  rb   r  s     @@r   test_like_dtype_structuredz*TestNdEmptyLike.test_like_dtype_structured  sG    3/C+<=>	&bjj)r   c                 h    | j                   fd}| j                  |t        j                         y )Nc                 4     | t         j                        S ra  r#  r  s    r   r  z3TestNdEmptyLike.test_like_dtype_kwarg.<locals>.func  s    #RXX..r   r  r  s     @r   test_like_dtype_kwargz%TestNdEmptyLike.test_like_dtype_kwarg  s#    	/bjj)r   c                 h    | j                   fd}| j                  |t        j                         y )Nc                      | d      S )Nrr   r   rM   r  s    r   r  z7TestNdEmptyLike.test_like_dtype_str_kwarg.<locals>.func  s    #W--r   r  r  s     @r   test_like_dtype_str_kwargz)TestNdEmptyLike.test_like_dtype_str_kwarg  s#    	.bjj)r   c                 h    | j                   fd}| j                  |t        j                         y )Nc                      | d      S )Nr2  r   rM   r  s    r   r  zLTestNdEmptyLike.test_like_dtype_str_kwarg_alternative_spelling.<locals>.func  s    #T**r   r  r  s     @r   .test_like_dtype_str_kwarg_alternative_spellingz>TestNdEmptyLike.test_like_dtype_str_kwarg_alternative_spelling  s#    	+bjj)r   c                    | j                   t        fd       }| j                  t              5 } |t	        j
                  d      d       d d d        t        j                        }d| j                   j                   d}| j                  ||       | j                  dj                  j                        |       y # 1 sw Y   vxY w)Nc                      | |      S r   rM   r<  s     r   r  z;TestNdEmptyLike.test_like_dtype_non_const_str.<locals>.func  r>  r   ru   rr   r?  r@  z'{}(array(float64, 1d, C), unicode_type))rB   r   r   r   r   r   r   r   rJ   r   r   rA  s        @r   test_like_dtype_non_const_strz-TestNdEmptyLike.test_like_dtype_non_const_str  s    		! 
	! {+vW% , V%%&,,- ." "c6"5<<V__M	 ,+s   CCc                    | j                   t        fd       }| j                  t              5 } |t	        j
                  d             d d d        t        j                        }| j                  d|       y # 1 sw Y   1xY w)Nc                      | d      S rG  rM   r  s    r   r  z9TestNdEmptyLike.test_like_dtype_invalid_str.<locals>.func  rI  r   ru   rJ  )	rB   r   r   r   r   r   r   r   r   rK  s       @r   test_like_dtype_invalid_strz+TestNdEmptyLike.test_like_dtype_invalid_str  so    		' 
	' {+v , V%%&?H	 ,+s   A==B)rJ   rK   rL   r  r   r  r  r  r  r  r  r  r  r  r  rs  rt  s   @r   r  r    s@    $*%******$Ir   r  c                   8     e Zd Z fdZd Z fdZ fdZ xZS )TestNdZerosLikec                 T    t         t        |           t        j                  | _        y r   )r  r  r  r   
zeros_likerB   r  s    r   r  zTestNdZerosLike.setUp  r  r   c                 D    t         j                  j                  ||       y r   r  r  s      r   r   z"TestNdZerosLike.check_result_value  r  r   c                 *    t         t        |           y r   )r  r  r  r  s    r   r  z$TestNdZerosLike.test_like_structured  s    ot9;r   c                 *    t         t        |           y r   )r  r  r  r  s    r   r  z*TestNdZerosLike.test_like_dtype_structured  s    ot?Ar   )rJ   rK   rL   r  r   r  r  rs  rt  s   @r   r  r    s    $/<B Br   r  c                   n     e Zd Z fdZej
                   fd       Zej
                   fd       Z xZS )TestNdOnesLikec                 b    t         t        |           t        j                  | _        d| _        y r   )r  r  r  r   	ones_likerB   expected_valuer  s    r   r  zTestNdOnesLike.setUp  s#    nd)+llr   c                 *    t         t        |           y r   )r  r  r  r  s    r   r  z#TestNdOnesLike.test_like_structured  s    nd8:r   c                 *    t         t        |           y r   )r  r  r  r  s    r   r  z)TestNdOnesLike.test_like_dtype_structured  s    nd>@r   )	rJ   rK   rL   r  ry  rz  r  r  rs  rt  s   @r   r  r    s>      ; ; A Ar   r  c                   f    e Zd Zd Zd Zej                  d        Zd Zd Z	d Z
d Zd Zd	 Zd
 Zy)TestNdFullLikec                 D    t         j                  j                  ||       y r   r  r  s      r   r   z!TestNdFullLike.check_result_value  r  r   c                 J    d }| j                  |t        j                         y )Nc                 .    t        j                  | d      S )N      @r   	full_liker]   s    r   r  z&TestNdFullLike.test_like.<locals>.func      <<S))r   r  r   rb   r  s     r   r  zTestNdFullLike.test_like  s    	*bjj)r   c                     t        j                  dt         j                  fdt         j                  fg      }d }| j	                  ||       y )Nr   r   c                 .    t        j                  | d      S r  r  r]   s    r   r  z1TestNdFullLike.test_like_structured.<locals>.func  r  r   )r   r<   rT  r   r  )rA   r<   r  s      r   r  z#TestNdFullLike.test_like_structured  s9    3/C+<=>	*e$r   c                 J    d }| j                  |t        j                         y )Nc                 L    t        j                  | dt         j                        S r  r   r  r  r]   s    r   r  z,TestNdFullLike.test_like_dtype.<locals>.func$  s    <<S"((33r   r  r  s     r   r  zTestNdFullLike.test_like_dtype#  s    	4bjj)r   c                 z    t        j                  d      fd}| j                  |t         j                         y )Nr  c                 2    t        j                  | d      S r  r  )rS   r<   s    r   r  z5TestNdFullLike.test_like_dtype_instance.<locals>.func*  s    <<S%00r   )r   r<   r  rb   r  s     @r   r  z'TestNdFullLike.test_like_dtype_instance(  s(     	1bjj)r   c                 J    d }| j                  |t        j                         y )Nc                 N    t        j                  | dt         j                        S )Nr  r   r  r]   s    r   r  z2TestNdFullLike.test_like_dtype_kwarg.<locals>.func/  s    <<S99r   r  r  s     r   r  z$TestNdFullLike.test_like_dtype_kwarg.  s    	:bjj)r   c                 J    d }| j                  |t        j                         y )Nc                 0    t        j                  | dd      S r  r  r]   s    r   r  z6TestNdFullLike.test_like_dtype_str_kwarg.<locals>.func4  s    <<S'22r   r  r  s     r   r  z(TestNdFullLike.test_like_dtype_str_kwarg3  s    	3bjj)r   c                 J    d }| j                  |t        j                         y )Nc                 2    t        j                  | dd      S )Nr  r  r   r  r]   s    r   r  zKTestNdFullLike.test_like_dtype_str_kwarg_alternative_spelling.<locals>.func9  s    <<S44r   r  r  s     r   r  z=TestNdFullLike.test_like_dtype_str_kwarg_alternative_spelling8  s    	5bjj)r   c                     t         d        }| j                  t              5 } |t        j                  d      dd       d d d        t        j                        }d}| j                  ||       y # 1 sw Y   3xY w)Nc                 0    t        j                  | ||      S r   r  )rS   r  r=  s      r   r  z@TestNdFullLike.test_like_dtype_non_const_str_kwarg.<locals>.func?  s    <<R,,r   rk   r  rr   z?If np.full_like dtype is a string it must be a string constant.r   r   r   r   r   r   r   r   r  s        r   #test_like_dtype_non_const_str_kwargz2TestNdFullLike.test_like_dtype_non_const_str_kwarg=  so    		- 
	- {+vc7+ , V%%&"c6" ,+s   A22A;c                     t         d        }| j                  t              5 } |t        j                  d      d       d d d        t        j                        }| j                  d|       y # 1 sw Y   1xY w)Nc                 0    t        j                  | |d      S rG  r  )rS   r  s     r   r  z8TestNdFullLike.test_like_dtype_invalid_str.<locals>.funcM  s    <<R22r   ru   g333333@rJ  r  r  s       r   r  z*TestNdFullLike.test_like_dtype_invalid_strK  sg    		3 
	3 {+vS! , V%%&?H	 ,+s   A//A8N)rJ   rK   rL   r   r  ry  rz  r  r  r  r  r  r  r  r  rM   r   r   r  r    sJ    /* % %*
**
*
*
#
Ir   r  c                   $    e Zd Zd Zd Zd Zd Zy)TestNdIdentityc                 *    | j                  |dg       y )Nrk   rI   rA   rB   s     r   check_identityzTestNdIdentity.check_identityZ  s    6D6*r   c                 ,    d }| j                  |       y )Nc                 ,    t        j                  |       S r   r   identityr  s    r   r  z*TestNdIdentity.test_identity.<locals>.func^  s    ;;q>!r   )r!  r  s     r   test_identityzTestNdIdentity.test_identity]  s    	"D!r   c                     t         j                  t         j                  t         j                  t        j                  d      dfD ]  fd}| j                  |        y )Nr  r  c                 0    t        j                  |       S r   r$  r  s    r   r  z0TestNdIdentity.test_identity_dtype.<locals>.funce  s    {{1e,,r   )r   rb  rT  r  r<   r!  r  s     @r   test_identity_dtypez"TestNdIdentity.test_identity_dtypeb  sC    llBHHbhh8HE-%	r   c                     t         d        }| j                  t              5 } |dd       d d d        t        j                        }d}| j                  ||       y # 1 sw Y   3xY w)Nc                 .    t        j                  | |      S r   r$  )ri   r=  s     r   r  z@TestNdIdentity.test_like_dtype_non_const_str_kwarg.<locals>.funck  s    ;;q"%%r   ru   rr   z>If np.identity dtype is a string it must be a string constant.r  r  s        r   r  z2TestNdIdentity.test_like_dtype_non_const_str_kwargi  se    		& 
	& {+vG , V%%&"c6" ,+   
AA'N)rJ   rK   rL   r!  r&  r)  r  rM   r   r   r  r  X  s    +"
&#r   r  c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)		TestNdEyec                 2    d }| j                  |ddg       y )Nc                 ,    t        j                  |       S r   r   eyer  s    r   r  z"TestNdEye.test_eye_n.<locals>.func|  s    66!9r   r_   r  r  r  s     r   
test_eye_nzTestNdEye.test_eye_n{  s    	4$.r   c                     d t         j                  t        j                  d      fD ]  }|fd}| j                  |ddg        y )Nr_   c                 0    t        j                  | |      S ra  r1  r  s     r   r  z(TestNdEye.test_eye_n_dtype.<locals>.func  s    vvau--r   r3  r  )r   r/  rb  rI   )rA   r=  r  s      r   test_eye_n_dtypezTestNdEye.test_eye_n_dtype  s;    Q8B  .tdD\2 9r   c                 2    d }| j                  |g d       y )Nc                 .    t        j                  | |      S r   r1  ri   rs   s     r   r  z$TestNdEye.test_eye_n_m.<locals>.func  s    66!Q<r   )r_   r~   rk   r~   )r   rk   r  r  s     r   test_eye_n_mzTestNdEye.test_eye_n_m  s    	 4!9:r   c                 ,    | j                  |g d       y )N))r_   r~   r   )rk   ru   r_   )rk   ru   r   )ru   rk   )ru   rk   )ru   rk   r   r  r  s     r   check_eye_n_m_kzTestNdEye.check_eye_n_m_k  s    4 "- 	.r   c                 ,    d }| j                  |       y )Nc                 0    t        j                  | ||      S r   r1  ri   rs   r}   s      r   r  z&TestNdEye.test_eye_n_m_k.<locals>.func  s    66!Q?"r   rA  r  s     r   test_eye_n_m_kzTestNdEye.test_eye_n_m_k  s    	#T"r   c                 ,    d }| j                  |       y )Nc                 P    t        j                  | ||t         j                        S N)NMr}   r<   )r   r2  rT  rD  s      r   r  z,TestNdEye.test_eye_n_m_k_dtype.<locals>.func  s    66Aarxx88r   rE  r  s     r   test_eye_n_m_k_dtypezTestNdEye.test_eye_n_m_k_dtype  s    	9T"r   c                 \    t        j                  d      fd}| j                  |       y )NrT  c                 6    t        j                  | ||      S rI  r1  )ri   rs   r}   r<   s      r   r  z5TestNdEye.test_eye_n_m_k_dtype_instance.<locals>.func  s    66Aau55r   )r   r<   rA  r  s     @r   test_eye_n_m_k_dtype_instancez'TestNdEye.test_eye_n_m_k_dtype_instance  s$    !	6T"r   N)
rJ   rK   rL   r4  r7  r=  rA  rF  rL  rO  rM   r   r   r.  r.  y  s%    /
3;
.#
#
#r   r.  c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)

TestNdDiagc                    t        j                  g d      }t        j                  g dg      }t        j                  |      }|||g| _        t        j                  d      j                  dd      }t        j                  d      j                  dd      }||g| _        d }|| _        t        |      | _	        dd}|| _
        t        |      | _        y )Nr     rk   ru   c                 ,    t        j                  |       S r   r   diag)qs    r   r  zTestNdDiag.setUp.<locals>.func  s    771:r   c                 0    t        j                  | |      S )Nr}   rU  )rW  r}   s     r   
func_kwargz$TestNdDiag.setUp.<locals>.func_kwarg  s    771?"r   )r   )r   array	transposevectorsrl   r   	matriciespyr9   jitpy_kwjit_kw)rA   vhvvva3x4a4x3r  rZ  s           r   r  zTestNdDiag.setUp  s    HHYXXyk"\\"2r{yy}$$Q*yy}$$Q*	$<	#
Z(r   c                      ||i |} ||i |}| j                  |j                  |j                         | j                  |j                  |j                         t        j                  j                  ||       y r   )r:   r;   r<   r   r>   r?   )rA   rB   nrtfuncrF   kwargsrG   computeds          r   
check_diagzTestNdDiag.check_diag  sd    4*6*D+F+68


(3r   c                 t    | j                   D ])  }| j                  | j                  | j                  |       + y r   )r]  rl  r_  r`  rA   ds     r   test_diag_vect_createz TestNdDiag.test_diag_vect_create  s(    AOODGGTXXq1 r   c                     t        dd      D ]<  }| j                  D ]+  }| j                  | j                  | j                  ||       - > y )Nir   rY  )rh   r]  rl  ra  rb  rA   r}   ro  s      r   test_diag_vect_create_kwargz&TestNdDiag.test_diag_vect_create_kwarg  s<    sBA\\

DKKa@ "  r   c                 t    | j                   D ])  }| j                  | j                  | j                  |       + y r   )r^  rl  r_  r`  rn  s     r   test_diag_extractzTestNdDiag.test_diag_extract  s(    AOODGGTXXq1  r   c                     t        dd      D ]<  }| j                  D ]+  }| j                  | j                  | j                  ||       - > y )Nru   rY  )rh   r^  rl  ra  rb  rr  s      r   test_diag_extract_kwargz"TestNdDiag.test_diag_extract_kwarg  s<    r1A^^

DKKa@ $ r   c                    t        j                  dggg      }t        | j                        }| j	                  t
              5   |        d d d        | j	                  t              5   ||       d d d        | j	                  t              5  t        | j                        } ||d       d d d        y # 1 sw Y   mxY w# 1 sw Y   SxY w# 1 sw Y   y xY w)N      ?rk   rY  )r   r[  r9   r_  r   r  r   ra  )rA   ro  rE   dfuncs       r   test_error_handlingzTestNdDiag.test_error_handling  s    HHtfXtww y)G * {+!H ,{+4::&E!qM ,+ *) ,+++s$   B7(	C C7C CCc                     t        | j                        }d}| j                  t        |      5 } |d        d d d        y # 1 sw Y   y xY w)Nz'.*The argument "v" must be array-like.*)r9   r_  assertRaisesRegexr   )rA   rE   rC  r   s       r   test_bad_shapezTestNdDiag.test_bad_shape  s9    tww7##K5$K 655s   	A  A	N)rJ   rK   rL   r  rl  rp  rs  ru  rx  r|  r  rM   r   r   rQ  rQ    s,    )$42
A2
Ar   rQ  c                       e Zd Zd Zd Zd Zy)TestLinspacec                 2    d }| j                  |g d       y )Nc                 .    t        j                  | |      S r   r   r  r:  s     r   rB   z,TestLinspace.test_linspace_2.<locals>.pyfunc  s    ;;q!$$r   ))r   ru   )r_   r   )            @)                    @      @)r~   r_   )      ?      ?              ?r  r   s     r   test_linspace_2zTestLinspace.test_linspace_2  s    	%64	5r   c                 2    d }| j                  |g d       y )Nc                 0    t        j                  | ||      S r   r  ri   rs   r|   s      r   rB   z,TestLinspace.test_linspace_3.<locals>.pyfunc  s    ;;q!Q''r   ))r   ru   	   )r_   ru   rk   )r  r  r   )r  r  r   )r~   r_   r   )r  r  r   )r_   g}Ô%ITr_   r  r   s     r   test_linspace_3zTestLinspace.test_linspace_3  s    	(6>	?r   c                 ~    t         d        }d\  }}}| j                   ||||      |j                  |||             y )Nc                 0    t        j                  | ||      S r   r  r  s      r   r^   z0TestLinspace.test_linspace_accuracy.<locals>.foo  s    ;;q!Q''r   )g        rz  r   )r9   assertPreciseEqualpy_func)rA   r^   ri   rs   r|   s        r   test_linspace_accuracyz#TestLinspace.test_linspace_accuracy  sH     
	( 
	(  1aAq!ckk!Q.BCr   N)rJ   rK   rL   r  r  r  rM   r   r   r  r    s    5?Dr   r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)TestNpyEmptyKeywordc                     fd}g d}t        |      }|D ]^  } ||      } ||      }| j                  |j                  |j                         | j                  |j                  |j                         ` y )Nc                 2    t        j                  |       S ra  r[   ra   r<   s    r   rB   z7TestNpyEmptyKeyword._test_with_dtype_kw.<locals>.pyfunc  s    88E//r   r_   r   r  r9   r:   r<   ra   rA   r<   rB   shapesrE   srG   r   s    `      r   _test_with_dtype_kwz'TestNpyEmptyKeyword._test_with_dtype_kw
  sd    	0 vAayH(CX^^SYY7X^^SYY7	 r   c                     t         j                  t         j                  t         j                  t        j                  d      fD ]  }| j                  |        y Nrb  )r   rr   r   rb  r<   r  rA   r<   s     r   test_with_dtype_kwsz'TestNpyEmptyKeyword.test_with_dtype_kws  s9    hh

BLL"((;:OPE$$U+ Qr   c                     fd}g d}t        |      }|D ]^  } ||      } ||      }| j                  |j                  |j                         | j                  |j                  |j                         ` y )Nc                 2    t        j                  |       S )Nr  r[   r  s    r   rB   zATestNpyEmptyKeyword._test_with_shape_and_dtype_kw.<locals>.pyfunc  s    88%u55r   r  r  r  s    `      r   _test_with_shape_and_dtype_kwz1TestNpyEmptyKeyword._test_with_shape_and_dtype_kw  sd    	6 vAayH(CX^^SYY7X^^SYY7	 r   c                     t         j                  t         j                  t         j                  t        j                  d      fD ]  }| j                  |        y r  )r   rr   r   rb  r<   r  r  s     r   test_with_shape_and_dtype_kwsz1TestNpyEmptyKeyword.test_with_shape_and_dtype_kws(  s9    hh

BLL"((;:OPE..u5 Qr   c                     d }t        |      }| j                  t              5   |        d d d        y # 1 sw Y   y xY w)Nc                  *    t        j                         S r   r[   rM   r   r   rB   z6TestNpyEmptyKeyword.test_empty_no_args.<locals>.pyfunc.  s    88:r   )r9   r   r   )rA   rB   rE   s      r   test_empty_no_argsz&TestNpyEmptyKeyword.test_empty_no_args,  s3    	 v {+G ,++s   5>N)rJ   rK   rL   r  r  r  r  r  rM   r   r   r  r  	  s    8,86
r   r  c                   N    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y)TestNpArrayc                     d }t        |      } |d      }| j                  |t        j                  dt        j                                |d      }| j                  |t        j                  d             y )Nc                 ,    t        j                  |       S r   r   r[  args    r   rB   z#TestNpArray.test_0d.<locals>.pyfunc<      88C= r   rZ   r   r  )r9   r  r   r[  ro  rA   rB   rE   r   s       r   r  zTestNpArray.test_0d;  s[    	! vBiRXXb%@ACjRXXc]3r   c                 2    d }| j                  |ddg       y )Nc                 L    t        j                  | t         j                        S ra  )r   r[  rT  r  s    r   rB   z.TestNpArray.test_0d_with_dtype.<locals>.pyfuncF      88Crxx00r   )rZ   )r  r  r   s     r   test_0d_with_dtypezTestNpArray.test_0d_with_dtypeE  s    	1 	6E6?3r   c                 :   d }t        |      } |g d      }| j                  |t        j                  g d              |d      }| j                  |t        j                  g d              |d      }| j                  |t        j
                  d             y )Nc                 ,    t        j                  |       S r   r  r  s    r   rB   z#TestNpArray.test_1d.<locals>.pyfuncL  r  r   )r~   rk   rZ   )rz  y              @rZ   rM   )r9   r  r   ro  r[  rb   r  s       r   r   zTestNpArray.test_1dK  sy    	! vJRWWZ%89O$RXXo%>?BiRZZ^4r   c                 B    d }| j                  |ddgfddgfddg       y )Nc                 L    t        j                  | t         j                        S ra  )r   r[  r   r  s    r   rB   z.TestNpArray.test_1d_with_dtype.<locals>.pyfunc[  s    88Crzz22r   r~   rZ   r  rz  )r_   r  rZ   rM   r  r   s     r   test_1d_with_dtypezTestNpArray.test_1d_with_dtypeZ  s6    	3 	6WJ!3ZM+!	r   c                 B    d }| j                  |ddgfddgfddg       y )Nc                 0    t        j                  | d      S )Nr   r   r  r  s    r   rB   z2TestNpArray.test_1d_with_str_dtype.<locals>.pyfuncf  s    88Cy11r   r~   rZ   r  rz  r  r  r  r   s     r   test_1d_with_str_dtypez"TestNpArray.test_1d_with_str_dtypee  s6    	2 	6WJ!3ZM+!	r   c                     t         d        }| j                  t              5 } |dd       d d d        t        j                        }d}| j                  ||       y # 1 sw Y   3xY w)Nc                 0    t        j                  | |      S ra  r  )r  r=  s     r   r  z:TestNpArray.test_1d_with_non_const_str_dtype.<locals>.funcr  s    88Cr**r   )r   rk   rr   z;If np.array dtype is a string it must be a string constant.r  r  s        r    test_1d_with_non_const_str_dtypez,TestNpArray.test_1d_with_non_const_str_dtypep  se    		+ 
	+ {+v! , V%%&"c6" ,+r,  c                    d }t        |      } |ddg      }| j                  |t        j                  ddgddgg              |dd	g      }| j                  |t        j                  dd
gddgg              |ddgddgf      }| j                  |t        j                  ddgddgg              |ddgddgf      }| j                  |t        j                  ddgddgg              |d      }| j                  |t        j                  ddgddgg              |d      }| j                  |t        j                  d             y )Nc                 ,    t        j                  |       S r   r  r  s    r   rB   z#TestNpArray.test_2d.<locals>.pyfunc  r  r   r;  rk   ru   r_   r~   rk   ru   r_   r  rk   r  r  r  r  ))      ?r~   )r  r  r  )rM   rM   )r9   r  r   ro  rb   r  s       r   rQ  zTestNpArray.test_2d~  sI   	! vVV$%RWWq!fq!f-=%>?Xx()RZZ!SAs80D%EFaVaV$%RWWq!fq!f-=%>?aVc3Z()RZZ!Q#s0D%EF*+RZZ#qC:0F%GHHoRZZ%9:r   c                     d }t        |      } |ddg      }| j                  |t        j                  ddgddgg             y )Nc                 L    t        j                  | t         j                        S ra  )r   r[  rr   r  s    r   rB   z.TestNpArray.test_2d_with_dtype.<locals>.pyfunc  r  r   r  r  r_   r~   rk   ru   )r9   r  r   rr   r  s       r   test_2d_with_dtypezTestNpArray.test_2d_with_dtype  sG    	1 vXx()RXX1v1v.>%?@r   c                 :    d }t        |      }t        j                   fd       } |d      5   |t        j                  dg             d d d         |d      5   |t        j
                  d      t        j
                  d      gf       d d d         |d      5  t        j                  d	d
g      }t        j                  d|      d   } |dt        j
                  d      |ff       d d d        y # 1 sw Y   xY w# 1 sw Y   wxY w# 1 sw Y   y xY w)Nc                 ,    t        j                  |       S r   r  r  s    r   rB   z'TestNpArray.test_raises.<locals>.pyfunc  r  r   c              3      K   j                  t              5 }d  d d d        j                  | t        j                               y # 1 sw Y   /xY wwr   )r   r   r   r   r   )rC  r   rA   s     r   check_raisesz-TestNpArray.test_raises.<locals>.check_raises  s@     "";/6 0MM#s6#3#345 0/s   AA.AAAz;array(float64, 1d, C) not allowed in a homogeneous sequencerz  zOtype Tuple(int64, reflected list(int64)<iv=None>) does not have a regular shaper_   r~   zrcannot convert Tuple(int64, Record(a[type=int32;offset=0],b[type=float32;offset=4];8;False)) to a homogeneous type)r   r2  )r   f4r   r   r;  )r9   
contextlibcontextmanagerr   r[  rW  r<   r  )rA   rB   rE   r  stvals   `     r   test_raiseszTestNpArray.test_raises  s   	! v		"	"	6 
#	6
  2 4"((B4.!4  : <288A;!./< K ;45B((1B'*C6BHHQK-./ 4 4< < s$   C92DAD9DDDc                     t         d        }d}| j                  t        |      5 } |d        d d d        y # 1 sw Y   y xY w)Nc                 ,    t        j                  |       S r   r  )objs    r   r  z(TestNpArray.test_bad_array.<locals>.func  s    88C= r   z,.*The argument "object" must be array-like.*r   r~  r   rA   r  rC  r   s       r   test_bad_arrayzTestNpArray.test_bad_array  s@    		! 
	! =##K5J 655s	   	7A c                     t         d        }d}| j                  t        |      5 } |dd       d d d        y # 1 sw Y   y xY w)Nc                 .    t        j                  | |      S r   r  )r  r=  s     r   r  z(TestNpArray.test_bad_dtype.<locals>.func  s    88C$$r   z>.*The argument "dtype" must be a data-type if it is provided.*r   ru   r  r  s       r   test_bad_dtypezTestNpArray.test_bad_dtype  sC    		% 
	% O##K5AJ 655s	   
8AN)rJ   rK   rL   r  r  r   r  r  r  rQ  r  r  r  r  rM   r   r   r  r  9  s:    445		#;*A0:r   r  c                   L    e Zd ZdZd Zej                  d        Zd Zd Z	d Z
y)TestNpConcatenatez%
    Tests for np.concatenate().
    c                     t        j                  d      j                  d      }|dz   }|dz   j                  d      }|dz   d d d   }|dz   dd d df   }|||||fS N   )ru   rk   r~   r   F)orderr   .r   rl   r   r   rA   r   r   r   ro  r  s         r   
_3d_arrayszTestNpConcatenate._3d_arrays  n    IIbM!!),FVMMM$VTrTNVS2X!Q1}r   c              #      K   | j                  t              5 }d  d d d        | j                  d|z  t        j                               y # 1 sw Y   2xY ww)Nz*input sizes over dimension %d do not matchr   r  r   r   r   )rA   r   r   s      r   assert_invalid_sizes_over_dimz/TestNpConcatenate.assert_invalid_sizes_over_dim  sH     z*f +BTI&**+	- +*s   AA1AAAc           	         	
 t         
t        
      
 fd		fd} j                         \  }}}}} ||||        ||||        ||j                  |j                  |j                          ||j                  |j                  |j                          ||j                  |j                  |j                          ||j                  |j                  |j                          	|dd  ||d d d   d        	||d d dd f   |d        	|||d d d d dd f   d        |||j	                  t
        j                        |        j                          dD ]*  } j                  d      5   |dd  |||       d d d        , d	D ]0  } j                  d      5   ||d d dd f   ||       d d d        2 y # 1 sw Y   lxY w# 1 sw Y   IxY w)
Nc                 r    |d|z   fD ],  } | |||      } | |||      }	j                  ||       . y )Nr   r  )
r   r   r   r   axrG   r   rE   rB   rA   s
          r   checkz(TestNpConcatenate.test_3d.<locals>.check  sF    R$Y'!!Q3Aq!"-''X6 (r   c                 <    t        d      D ]  } | |||        y )Nrk   r   )r   r   r   r   r  s       r   check_all_axesz1TestNpConcatenate.test_3d.<locals>.check_all_axes  s    aaAt$ !r   r_   r   r   r   r~   )r_   r~   r?  r   )r   r~   r  r   )	r   r9   r  Tr  r   rb   r   r  )rA   r  r   r   r   ro  r  r   rE   r  rB   s   `       @@@r   test_3dzTestNpConcatenate.test_3d  s    v	7	% )1aA 	q!Qq!QqssACC%qssACC%qssACC% 	qssACC% 	aeQ$B$a(a1QR4!!$aAa!"fIA& 	q!((2::.2 	! #D33A6aeQ4( 76 # #D33A6a1QR4!T* 76 # 76 76s   ;G
*G
G	G	c                     t         t               fd} j                         \  }}}}} ||||        ||||        ||j                  |j                  |j                          ||j                  |j                  |j                          ||j                  |j                  |j                          ||j                  |j                  |j                          ||dd  ||d d d           j	                           j                  d      5   ||d d dd f   |       d d d        y # 1 sw Y   y xY w)Nc                 R     | ||      } | ||      }j                  ||       y r   r  )r   r   r   rG   r   rE   rB   rA   s        r   r  z0TestNpConcatenate.test_3d_no_axis.<locals>.check  s-    aAH1a.C##C2r   r_   r   )r   r9   r  r  r   r  )	rA   r  r   r   r   ro  r  rE   rB   s	   `      @@r   test_3d_no_axisz!TestNpConcatenate.test_3d_no_axis  s    v	3
 )1aA 	aAaAacc133acc133acc133 	acc133 	aeQ$B$  	! //2!QqtWa  322s   D77E c                    t         }t        |      }t        j                  d      }|j	                  d      }|j                  t        j                  dt        j                  fg            }t        j                  d      }| j                         5 } ||||       d d d        | j                  dt        j                               | j                         5 } ||||       d d d        | j                  dt        |j                               | j                         5 } ||||       d d d        | j                  dt        |j                               | j                         5 } ||d|       d d d        | j                  d	t        |j                               y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   TxY w)
N   )rk   r   r   rZ   z8all the input arrays must have same number of dimensionsz(input arrays must have compatible dtypesz.zero-dimensional arrays cannot be concatenatedr_   %expecting a non-empty tuple of arrays)r   r9   r   rl   r   r  r<   rX  r[  assertTypingErrorr   r   r   )rA   rB   rE   r   r   r   ro  r   s           r   test_typing_errorsz$TestNpConcatenate.test_typing_errors5  so    vIIbMIIfHHRXXRWW~./0HHRL ##%!QN &P&**+	- ##%!QN &@&**+	- ##%!QN &F&**+	- ##%!QN &=s6CSCS?TU) &% &% &% &%s0   F#F0"F<*G#F-0F9<GGN)rJ   rK   rL   __doc__r  r  r  r  r  r  r  rM   r   r   r  r    s8     - -0+d"!HVr   r  r"   z"this Numpy doesn't have np.stack()c                       e Zd ZdZd Zej                  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y)TestNpStackz
    Tests for np.stack().
    c                     t        j                  d      j                  d      }|dz   }|dz   j                  d      }|dz   d d d   }|dz   dd d df   }|||||fS r  r  r  s         r   r  zTestNpStack._3d_arrays\  r  r   c              #      K   | j                  t              5 }d  d d d        | j                  dt        j                               y # 1 sw Y   /xY ww)Nz)all input arrays must have the same shaper  )rA   r   s     r   assert_invalid_sizesz TestNpStack.assert_invalid_sizesd  sC     z*f +A&**+	- +*s   AA.AAAc                      || } || }| j                  |j                  |j                         | j                  |j                         |j                                y r   )r:   ra   r  flatten)rA   rB   rE   rF   rG   r   s         r   check_stackzTestNpStack.check_stackk  sM    4=Tl
 	HNN3x/?/?/ABr   c                 
   
  fd

fd} j                         \  }}}}}	 ||||        ||||        ||j                  |j                  |j                          ||j                  |j                  |j                          ||j                  |j                  |j                          ||j                  |	j                  |j                          |||j                  t        j                        |       y )Nc                 8    j                  | ||f|z          y r   )r  )r   r   r   rF   rE   rB   rA   s       r   r  z#TestNpStack.check_3d.<locals>.checkv  s     VUQ1I,<=r   c                 4            D ]  } | |||        y r   rM   )r   r   r   rF   r  generate_starargss       r   r  z,TestNpStack.check_3d.<locals>.check_all_axesy  s    )+aAt$ ,r   )r  r  r  r   rb   )rA   rB   rE   r  r  r   r   r   ro  r  r  s   ````      @r   check_3dzTestNpStack.check_3du  s    	>	% )1aA 	q!Qq!QqssACC%qssACC%qssACC%qssACC% 	q!((2::.2r   c                     | j                          | j                          | j                         \  }}}}}| j                         5  t	         |             } ||d d ||g|  d d d        y # 1 sw Y   y xY w)Nr   )assert_no_memory_leakr   r  r  next)	rA   rE   r  r   r   r   ro  r  rF   s	            r   check_runtime_errorsz TestNpStack.check_runtime_errors  so    ""$! )1aA&&()+,D!CR&!Q&& )((s   A//A8c                 v    t         }t        |      }d }| j                  |||       | j                  ||       y)z(
        stack(3d arrays, axis)
        c               3   F   K   t        d      D ]  } | f d| z   f  y w)Nrk   r  r   r   s    r   r  z.TestNpStack.test_3d.<locals>.generate_starargs  s'     agDyl" !s   !N)r%   r9   r  r  rA   rB   rE   r  s       r   r  zTestNpStack.test_3d  s;     v	#
 	fe%67!!%):;r   c                 v    t         }t        |      }d }| j                  |||       | j                  ||       y)z"
        stack(3d arrays)
        c               3      K   d y wr  rM   rM   r   r   r  z6TestNpStack.test_3d_no_axis.<locals>.generate_starargs       G   N)r#   r9   r  r  r  s       r   r  zTestNpStack.test_3d_no_axis  s;     v	 	fe%67!!%):;r   c                     t         }t        |      }t        j                  d      }t        j                  d      }t        j                  d      }| j	                  |||||f       y)z"
        stack(0d arrays)
        rZ                TN)r#   r9   r   r[  r  rA   rB   rE   r   r   r   s         r   r  zTestNpStack.test_0d  sQ     vHHRLHHSMHHTNAq	2r   c                     d }| j                  |||       t        j                  d      }t        j                  d      }t        j                  d      }| j                  |||||f       y)zC
        3d and 0d tests for hstack(), vstack(), dstack().
        c               3      K   d y wr  rM   rM   r   r   r  z4TestNpStack.check_xxstack.<locals>.generate_starargs  r  r  rZ   r  TN)r  r   r[  r  )rA   rB   rE   r  r   r   r   s          r   check_xxstackzTestNpStack.check_xxstack  sY    	 	fe%67HHRLHHSMHHTNAq	2r   c                    t         }t        |      }| j                  ||       t        j                  d      }t        j                  d      dz   }| j                  |||||f       t        j                  d      j                  d      }t        j                  d      j                  d      dz   }| j                  |||||f       y )Nr   r  r   r  r   )r~   ru   r   )r(   r9   r!  r   rl   r  r   rA   rB   rE   r   r   s        r   test_hstackzTestNpStack.test_hstack  s    v65)IIaLIIaL2Aq	2IIaL  (IIaL  (3.Aq	2r   c                    t         t        g}|D ]  }t        |      }| j                  ||       t	        j
                  d      }|dz   }| j                  |||||f       t	        j
                  d      j                  d      }t	        j
                  d      j                  d      dz   }| j                  |||||f        y )Nr   r   r  r<  r   )ru   r~   r   )r,   r/   r9   r!  r   rl   r  r   )rA   	functionsrB   rE   r   r   s         r   test_vstackzTestNpStack.test_vstack  s     -	F6NEvu-		!ABAVUQ1I6		!$$V,A		!$$V,s2AVUQ1I6  r   c                 (   t         }t        |      }| j                  ||       t        j                  d      }|dz   }| j                  |||||f       t        j                  d      j                  d      }|dz   }| j                  |||||f       y )Nr   r   rS  r  r   )r2   r9   r!  r   rl   r  r   r#  s        r   test_dstackzTestNpStack.test_dstack  s    v65)IIaLFAq	2IIbM!!&)GAq	2r   c                    t         }t        |      }t        j                  d      }|dz   }t        j                  d      j	                  d      }| j                  |||||f       | j                          | j                          t        j                  d      }| j                         5   ||||f       d d d        |j	                  d      }| j                         5   ||||f       d d d        y # 1 sw Y   ?xY w# 1 sw Y   y xY w)Nru   r   rS  ru   rk   rZ   )r_   r_   r_   )
r5   r9   r   rl   r   r  r  r   r[  r  r  s         r   test_column_stackzTestNpStack.test_column_stack  s     vIIaLFIIbM!!&)Aq	2 	""$! HHRL##%1a) &IIi ##%1a) &% &% &%s   +C5 D5C>D
c                 J   t         t        t        t        t        fD ]y  }t        |      }t        j                  d      j                  d      }| j                         5 } ||d|       d d d        | j                  dt        j                               { y # 1 sw Y   1xY w)NrS  r+  r_   r   )r#   r(   r,   r2   r5   r9   r   rl   r   r  r   r   r   )rA   rB   rE   r   r   s        r   test_bad_arrayszTestNpStack.test_bad_arrays  s|     )Y	?SF6NE		"%%f-A '')VaA *MMA3vGWGWCXY T
 *)s   BB"	N)rJ   rK   rL   r  r  r  r  r  r  r  r  r  r  r  r!  r$  r'  r)  r,  r.  rM   r   r   r  r  V  sd     - -C34	'<<3337$3*Zr   r  c                  J   d t              t        j                  j                  d      t        j                  j                  d      dfd} fd}t        j                  |       }t        j                  |      }t        |       t        |       y )Nc                 2    t        |      D ]  }|| }}  | |fS )z1Swap array x and y for t number of times
        r   r   s       r   rB   z%benchmark_refct_speed.<locals>.pyfunc   s$     qAaqA !tr   r   i'  c                               y r   rM   )rB   r   r   r   s   r   bench_pyfuncz+benchmark_refct_speed.<locals>.bench_pyfunc-  s    q!Qr   c                               y r   rM   )rE   r   r   r   s   r   bench_cfuncz*benchmark_refct_speed.<locals>.bench_cfunc0  s    aAr   )r9   r   r   r   	benchmarkprint)	r2  r4  python_time
numba_timerE   rB   r   r   r   s	       @@@@@r   benchmark_refct_speedr9    sx     6NE
		A
		AA //,/K-J	+	*r   __main__):r  r   numpyr   r   rer   r   numba.core.errorsr   numbar   
numba.corer   r   r   numba.tests.supportr   r	   r
   r   ry  r9   r   r   r#   r%   r(   r,   r/   r2   r5   r7   rO   rW   r   r  rv  r|  objectr  r  r  r  r  r  r.  rQ  r  r  r  r  
skipUnlesshasattrr  r9  rJ   mainrM   r   r   <module>rE     s    
   	  	 )  + + M M  
4t	$%0*  # &:x : 4? 4
J:< J:ZD
, D
NNG%x NGb5 5nA$h nAb+f +\YI-x YIxBo B A_ A$DI,h DIN#X #B)# )#XF FPD8 D8-( -`O/8 OdHV HVV WR)+OPEZ/8 EZ QEZP4 zHMMO r   