
    pi                        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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"      Z0 G d. d/e      Z1 G d0 d1e"      Z2 G d2 d3e      Z3 G d4 d5ee"      Z4 G d6 d7ee      Z5 ejl                   e7ed8      d9       G d: d;ee             Z8d< Z9e:d=k(  r ejv                          yy)>    N)TypingError)njit)typesutilsconfig)MemoryLeakMixinTestCasetagskip_if_32bit)	PYVERSIONT)_nrtnogilc                 2    t        j                  | ||f      S Nnpconcatenateabcs      \/opt/services/ai/voice_agent/venv/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_stackr0   &   s    <<Aq	""r   c                 2    t        j                  | ||f      S r   )r   dstackr   s      r   	np_dstackr3   )   r*   r   c                 2    t        j                  | ||f      S r   )r   column_stackr   s      r   np_column_stackr6   ,   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_outputs2   s    v 		:Dt}H,CSXXx}}5SYY7##C2

''#6

**8S9		:r   N)T)__name__
__module____qualname__rJ    r   r   r8   r8   0   s    :r   r8   c                       e Zd Zd Zy)NrtRefCtTestc                 P    | j                  |j                  j                  |       y r   )r;   baserefcount)rB   arrexpects      r   assert_array_nrt_refctz#NrtRefCtTest.assert_array_nrt_refctA   s    **F3r   N)rK   rL   rM   rV   rN   r   r   rP   rP   @   s    4r   rP   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 )NrN   *   r   emptyrT   s    r   fooz'TestDynArray.test_empty_0d.<locals>.fooH   s    ((2,CCGJr      r[   rN   {   )r:   rV   r   r?   r@   r;   r<   shaper=   float64stridesfill)rB   r_   rT   s      r   test_empty_0dzTestDynArray.test_empty_0dG   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)nrT   is      r   r_   z'TestDynArray.test_empty_1d.<locals>.fooZ   s2    ((1+C1X A Jr      r`   ra   )r:   rV   r   r?   r@   aranger;   r<   rb   r=   rc   rd   itemsizere   )rB   r_   rj   rT   s       r   test_empty_1dzTestDynArray.test_empty_1dY   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]   int32ri   )mrj   rT   rk   js        r   rC   z*TestDynArray.test_empty_2d.<locals>.pyfunco   sX    ((Aq6288,C1X &q &A !AC1I&& Jr      rl   r`   	r:   rV   r   r?   r@   r;   r<   rb   rd   )rB   rC   rF   rt   rj   expected_arrgot_arrs          r   test_empty_2dzTestDynArray.test_empty_2dn   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   rr   )rt   rj   prT   rk   ru   ks          r   rC   z*TestDynArray.test_empty_3d.<locals>.pyfunc   ss    ((Aq!9bhh/C1X 1q 1A"1X 1'(1uqyAq!G111
 Jr   rv   rl      r`   rw   rB   rC   rF   rt   rj   r}   rx   ry   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   rr   )rt   rj   r}   rT   rk   ru   s         r   rC   z1TestDynArray.test_empty_2d_sliced.<locals>.pyfunc   s\    ((Aq6288,C1X &q &A !AC1I&& q6Mr   rv   rl   r   r`   rw   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 )Nrv   r=   c                       S r   rN   ys   r   return_external_arrayzDTestDynArray.test_return_global_array.<locals>.return_external_array   s    Hr   r`   )r   onesfloat32sysgetrefcountr:   r;   r?   r@   gccollect)rB   	initrefctr   rF   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 )Nrv   r   c                       dd  S Nr   rN   r   s   r   r   zKTestDynArray.test_return_global_array_sliced.<locals>.return_external_array   s    QR5Lr   r   )r   r   r   r:   assertIsNonerR   r?   r@   )rB   r   rF   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   rN   r   s    r   rC   z4TestDynArray.test_array_pass_through.<locals>.pyfunc   s    Hr   rv   r   )r   r   r   r:   r?   r@   assertIs)rB   rC   rT   rF   rH   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   rC   z;TestDynArray.test_array_pass_through_sliced.<locals>.pyfunc   s    QVVq[\?"r   rv   r   r`   r   )
r   r   r   r   r   r:   r;   r?   r@   r<   )rB   rC   rT   r   rF   r   rH   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]   rb   add)r   r   r   s      r   rC   z=TestDynArray.test_ufunc_with_allocated_output.<locals>.pyfunc  s)    ((177#CFF1aJr   
   r`   r      F      )r:   r   randomr?   r@   rV   reshape)rB   rC   rF   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<   ri   )inpr   rk   tmpru   s        r   rC   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   rN   )r   r   rF   s     r   wrappedz0TestDynArray.test_allocation_mt.<locals>.wrappedP  s    3ZCFr   d   	worker{0}targetrG   nameN)r:   r   r   randintcopyr?   r@   ri   
empty_like	threadingThreadformatappendstartjoinzip)rB   rC   r<   rT   
frozen_arrworkersinputsoutputsr   rk   r   threadr   rF   s                @r   test_allocation_mtzTestDynArray.test_allocation_mt)  sp   	& 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, 	6HCJJ##F3K5	6r   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   )rj   r   r   rk   s       r   rC   z*TestDynArray.test_refct_mt.<locals>.pyfunco  s_    ((388$C388_ $Q!A$ 1X $S$Jr   r   r   i  c                      | |      |d d  y r   rN   )rj   inputr   rF   s      r   r   z+TestDynArray.test_refct_mt.<locals>.wrapped  s    1e_CFr   r   r   r   N)r:   r   rm   floatr   r   r   	randranger?   r@   r;   ri   r]   r   r   r   r   r   r   r   )rB   rC   r<   r   expected_refctswapctrH   r   r   swapctsr   rk   r   r   rF   s                 @r   test_refct_mtzTestDynArray.test_refct_mtj  s   
	 v		$e,/!!$'&%(


%*>?)?@	% s 		#A((4.C%%d+F%%W,2E3+?+6+=+=a+@BF NN6"NN3NN6"		#  	FLLN	  	FKKM	 w0 	@KFCJJ##F65$93?	@ 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)rB   r_   raisess      r   test_invalid_size_arrayz$TestDynArray.test_invalid_size_array  s     
	 
	 	!{+ 	/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
            ri   r   r   trk   s       r   rC   z&TestDynArray.test_swap.<locals>.pyfunc  s+     1X !1 a4Kr   r   r   r`   )
r:   r   r   r   r   r   rR   r?   r@   r;   )	rB   rC   rF   r   r   r   r   rU   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   rk   s      r   rC   z7TestDynArray.test_return_tuple_of_array.<locals>.pyfunc  sE     A166]  tax! a4Kr   r   )	r:   r   r   r   r   r   r?   r@   r;   )	rB   rC   rF   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	                  ||       t
        dv rd}nt
        dv rd}nt        t
              | j                  |t        j                  |             | j                  |t        j                  |             y )Nc                     t        j                  | j                        }t        |j                        D ]  }| |   dz   ||<    ||f}|S r   r   )r   r   rk   r   s       r   rC   z?TestDynArray.test_return_tuple_of_array_created.<locals>.pyfunc  sJ     A166]  tax! Q$CJr   r   )rl      r`   )rl   r   )rl      )rl      )rl      r   )
r:   r   r   r?   r@   r   NotImplementedErrorr;   r   r   )	rB   rC   rF   r   r   r   r   r   expected_refcounts	            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# !>> !%i00*COOE,BC*COOE,BCr   c                 v   t         d        fd}t        |      }t        j                  d      }t        j                  |      }t
        dv rW| j                  dt        j                   ||                   | j                  dt        j                   ||                   nnt
        dv rW| j                  |t        j                   ||                   | j                  |t        j                   ||                   nt        t
              | j                  |t        j                  |             y)z_
        Dispatcher returns a new reference.
        It need to workaround it for now.
        c                     | S r   rN   )r   s    r   innerz7TestDynArray.test_issue_with_return_leak.<locals>.inner  s    Jr   c                      |       S r   rN   )r   r   s    r   rC   z8TestDynArray.test_issue_with_return_leak.<locals>.pyfunc  s    8Or   r   r   r   r   N)r:   r   rm   r   r   r   r;   r   )rB   rC   rF   rT   	old_refctr   s        @r   test_issue_with_return_leakz(TestDynArray.test_issue_with_return_leak  s    
 
	 
		 viimOOC(	#Qs <=Qc
 ;<>>Ys(DEYc
(CD%i00COOC$89r   N)rK   rL   rM   rf   ro   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rN   r   r   rX   rX   E   sp    $*.2086C%:,"<H?6B;Az B BN4N.D6:r   rX   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`   ra   )r:   rV   r;   r<   rb   r=   rd   check_result_valuer   r   re   r?   r@   )rB   rC   rF   rH   rI   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)Nrl   r`   ra   negative dimensions not allowedr:   rV   r;   r<   rb   r=   rd   r  r   r   re   r?   r@   r   
ValueErrorr   r   )rB   rC   rF   rj   rH   rI   cms          r   check_1dzConstructorBaseTest.check_1d1  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   rl   r`   ra   r   r  r  r	  )rB   rC   rF   rt   rj   rH   rI   r  s           r   check_2dzConstructorBaseTest.check_2dF  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)r:   r   r
  r   r   r   )rB   rC   rF   es       r   check_alloc_sizez$ConstructorBaseTest.check_alloc_size[  sP    vz* 	aG		
	 	s   AA N)rK   rL   rM   r  r  r  r  rN   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   zerosrC   rB   	__class__s    r   r  zTestNdZeros.setUph  s    k4&(hhr   c                 D    t         j                  j                  ||       y r   r   r?   r@   rB   rI   rH   s      r   r  zTestNdZeros.check_result_valuel      


X.r   c                 J    | j                   fd}| j                  |       y )Nc                        d      S NrN   rN   )rC   s   r   funcz!TestNdZeros.test_0d.<locals>.funcq  s    ":r   )rC   r  rB   r"  rC   s     @r   test_0dzTestNdZeros.test_0do  s    	dr   c                 J    | j                   fd}| j                  |       y )Nc                      |       S r   rN   rj   rC   s    r   r"  z!TestNdZeros.test_1d.<locals>.funcw  s    !9r   rC   r  r#  s     @r   test_1dzTestNdZeros.test_1du  s    	dr   c                 J    | j                   fd}| j                  |       y )Nc                 2     | t         j                        S r   r   rs   r'  s    r   r"  z'TestNdZeros.test_1d_dtype.<locals>.func}  s    !RXX&&r   r(  r#  s     @r   test_1d_dtypezTestNdZeros.test_1d_dtype{  s    	'dr   c                 x    | j                   t        j                  d      fd}| j                  |       y )Nrs   c                      |       S r   rN   rj   _dtyperC   s    r   r"  z0TestNdZeros.test_1d_dtype_instance.<locals>.func      !V$$r   )rC   r   r=   r  rB   r"  r1  rC   s     @@r   test_1d_dtype_instancez"TestNdZeros.test_1d_dtype_instance  s+    '"	%dr   c                 ~    | j                   dfd}| j                  |       fd}| j                  |       y )Nrs   c                      |       S r   rN   r0  s    r   r"  z+TestNdZeros.test_1d_dtype_str.<locals>.func  r2  r   c                      | d      S )N
complex128rN   r'  s    r   r"  z+TestNdZeros.test_1d_dtype_str.<locals>.func  s    !\**r   r(  r3  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   rN   r0  s    r   r"  z@TestNdZeros.test_1d_dtype_str_alternative_spelling.<locals>.func  r2  r   c                      | d      S )Nc8rN   r'  s    r   r"  z@TestNdZeros.test_1d_dtype_str_alternative_spelling.<locals>.func  s    !T?"r   r(  r3  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   rN   r0  s    r   r"  z<TestNdZeros.test_1d_dtype_str_structured_dtype.<locals>.func  r2  r   r(  r3  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   rN   rj   dtrC   s     r   r"  z5TestNdZeros.test_1d_dtype_non_const_str.<locals>.func      !R= r   r   rs   If np.0 dtype is a string it must be a string constant.)rC   r   r   r   r   r   rK   r   rB   r"  r   excstrmsgrC   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ABCDEFrN   r'  s    r   r"  z3TestNdZeros.test_1d_dtype_invalid_str.<locals>.func      !X&&r   r   'Invalid NumPy dtype specified: 'ABCDEF')rC   r   r   r   r   r   r   rB   r"  r   rK  rC   s       @r   test_1d_dtype_invalid_strz%TestNdZeros.test_1d_dtype_invalid_str  sm    		' 
	' {+ 	vG	 V%%&?H		 	s   	A**A3c                 J    | j                   fd}| j                  |       y )Nc                      | |f      S r   rN   rt   rj   rC   s     r   r"  z!TestNdZeros.test_2d.<locals>.func  s    1a&>!r   rC   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   int16rs   rX  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int8rX  s     r   func2z/TestNdZeros.test_2d_shape_dtypes.<locals>.func2  s#    288A;
344r   c                      | |f      S r   rN   rX  s     r   <lambda>z2TestNdZeros.test_2d_shape_dtypes.<locals>.<lambda>  s    1v r           r`   )	rC   r  r   	IS_32BITSr:   r   r
  r   r`  )rB   r^  rb  rF   rC   s       @r   test_2d_shape_dtypesz TestNdZeros.test_2d_shape_dtypes  s    	6e	5e67E"":. 2bhh}-q12 2 2 2s   -BBc                 J    | j                   fd}| j                  |       y )Nc                 8     | |ft         j                        S Nr   )r   	complex64rX  s     r   r"  z-TestNdZeros.test_2d_dtype_kwarg.<locals>.func  s    1a&55r   rY  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 )Nrk  r   rN   rX  s     r   r"  z1TestNdZeros.test_2d_dtype_str_kwarg.<locals>.func  s    1a&44r   rY  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 )Nr>  r   rN   rX  s     r   r"  zFTestNdZeros.test_2d_dtype_str_kwarg_alternative_spelling.<locals>.func  s    1a&--r   rY  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   rN   )r=   rC   rb   s   r   rd  z?TestNdZeros.test_alloc_size.<locals>.gen_func.<locals>.<lambda>  s    F5%0 r   rN   )rb   r=   rC   s   ``r   gen_funcz-TestNdZeros.test_alloc_size.<locals>.gen_func  s	    00r   r`   r   r   @   )rC   r   intpbitwidthr  r   )rB   widthrv  rC   s      @r   test_alloc_sizezTestNdZeros.test_alloc_size  si    

##	1 	hqEAI~rww?@hUQY';RWWEFr   )rK   rL   rM   r  r  r$  r)  r-  r4  r9  r?  rB  rM  rU  rZ  rg  rl  ro  rr  r{  __classcell__r  s   @r   r  r  f  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  r  r  r   r   rC   r  s    r   r  zTestNdOnes.setUp  s    j$%'ggr   c                 "    t         |           y r   )r  rB  r  s    r   rB  z-TestNdOnes.test_1d_dtype_str_structured_dtype  s    24r   )rK   rL   rM   r  unittestexpectedFailurerB  r|  r}  s   @r   r  r    s"     5 5r   r  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 )NrN         @r   fullrN   r   r   r"  z TestNdFull.test_0d.<locals>.func  s    772s##r   )r  rB   r"  s     r   r$  zTestNdFull.test_0d  s    	$dr   c                 ,    d }| j                  |       y )Nc                 .    t        j                  | d      S Nr  r  rj   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  rj   r=   s    r   r"  z/TestNdFull.test_1d_dtype_instance.<locals>.func  s    771c5))r   )r   r=   r  rB   r"  r=   s     @r   r4  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   r9  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   r?  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  )rj   fvrF  s      r   r"  z4TestNdFull.test_1d_dtype_non_const_str.<locals>.func)  s    771b"%%r   r   r  rs   z:If np.full dtype is a string it must be a string constant.r   r   r   r   r   r   rB   r"  r   rK  rL  s        r   rM  z&TestNdFull.test_1d_dtype_non_const_str'  sn    		& 
	& {+ 	%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 rP  r  )rj   r  s     r   r"  z2TestNdFull.test_1d_dtype_invalid_str.<locals>.func7  s    771b(++r   r  r  rS  r  rB   r"  r   rK  s       r   rU  z$TestNdFull.test_1d_dtype_invalid_str5  se    		, 
	, {+ 	vsO	 V%%&?H		 	s   
AA%c                 ,    d }| j                  |       y )Nc                 2    t        j                  | |fd      S r  r  rt   rj   s     r   r"  z TestNdFull.test_2d.<locals>.funcB  s    77Aq63''r   r  r  s     r   rZ  zTestNdFull.test_2dA  s    	(dr   c                 ,    d }| j                  |       y )Nc                 R    t        j                  | |fdt         j                        S )Ny      ?      @r   )r   r  rk  r  s     r   r"  z,TestNdFull.test_2d_dtype_kwarg.<locals>.funcG  s    77Aq682<<@@r   r  r  s     r   rl  zTestNdFull.test_2d_dtype_kwargF  s    	Adr   c                 |    d }| j                  |       d }| j                  |       d }| j                  |       y )Nc                 X    t        j                  | |ft        j                  d            S r   )r   r  rs   r  s     r   r"  z0TestNdFull.test_2d_dtype_from_type.<locals>.funcM  s    77Aq6288A;//r   c                 X    t        j                  | |ft        j                  d            S r   )r   r  r8  r  s     r   r"  z0TestNdFull.test_2d_dtype_from_type.<locals>.funcR  s     77Aq62==#344r   c                 R    t        j                  | |fdt         j                        S )Nr`   r   )r   r  ra  r  s     r   r"  z0TestNdFull.test_2d_dtype_from_type.<locals>.funcW  s    77Aq61BGG44r   r  r  s     r   test_2d_dtype_from_typez"TestNdFull.test_2d_dtype_from_typeK  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  r]  rs   r  s     r   r^  z.TestNdFull.test_2d_shape_dtypes.<locals>.func1]  s(    77BHHQK!5s;;r   c                 ~    t        j                  t        j                  |       t        j                  |      fd      S r  )r   r  r`  ra  r  s     r   rb  z.TestNdFull.test_2d_shape_dtypes.<locals>.func2a  s(    77BHHQK4c::r   c                 2    t        j                  | |fd      S r  r  r  s     r   rd  z1TestNdFull.test_2d_shape_dtypes.<locals>.<lambda>f  s    A(< r   re  r`   )r  r   rf  r:   r   r
  r   r`  )rB   r^  rb  rF   s       r   rg  zTestNdFull.test_2d_shape_dtypes[  sx    	<e	;e<=E"":. 2bhh}-q12 2 2 2s   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  rb   values   r   rd  z>TestNdFull.test_alloc_size.<locals>.gen_func.<locals>.<lambda>m  s    BGGE51 r   rN   r  s   ``r   rv  z,TestNdFull.test_alloc_size.<locals>.gen_funcl  s	    11r   r`   r   r   rw  )r   rx  ry  r  )rB   rz  rv  s      r   r{  zTestNdFull.test_alloc_sizej  sW    

##	2 	hqEAI~q9:hUQY';Q?@r   N)rK   rL   rM   r  r$  r)  r-  r4  r9  r?  rM  rU  rZ  rl  r  rg  r{  rN   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)Nr[      x)re   	TypeErrorr
  r=   rn   )rB   rT   
fill_values      r   mutate_arrayz$ConstructorLikeBaseTest.mutate_arrayu  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@   )rT   rH   rI   rF   rC   rB   s      r   	check_arrz5ConstructorLikeBaseTest.check_like.<locals>.check_arr~  s    c{H*CSXXx}}5SYY7##C2##C2c"h'JJ##C2r   r   r      )r  r  r`   r   rl   )rl   r`   r   rN   rN   r  r   F	WRITEABLEr`   )	r   linspaceastyper:   r   ndimflagsr   r
  )rB   rC   r=   r  origrb   rT   rF   s   ``     @r   
check_likez"ConstructorLikeBaseTest.check_like}  s    
	3 {{1a#**51v: 	E{23i''+ll5)cNxx!|#cc(#%*CIIk""":. AcN	" 	$q' s   5CC"	N)rK   rL   rM   r  r  rN   r   r   r  r  s  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   rC   r  s    r   r  zTestNdEmptyLike.setUp      ot*,mmr   c                      y r   rN   r  s      r   r  z"TestNdEmptyLike.check_result_value  s    r   c                 h    | j                   fd}| j                  |t        j                         y )Nc                      |       S r   rN   rT   rC   s    r   r"  z'TestNdEmptyLike.test_like.<locals>.func      #;r   rC   r  r   rc   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   rN   r  s    r   r"  z2TestNdEmptyLike.test_like_structured.<locals>.func  r  r   )r   r=   r]  r   rC   r  )rB   r=   r"  rC   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 )Nrs   c                      |       S r   rN   rT   r=   rC   s    r   r"  z6TestNdEmptyLike.test_like_dtype_instance.<locals>.func      #u%%r   )r   r=   rC   r  rc   rB   r"  r=   rC   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   rN   r  s    r   r"  z8TestNdEmptyLike.test_like_dtype_structured.<locals>.func  r  r   )r   r=   r]  r   rC   r  rc   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 rj  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 )Nrs   r   rN   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 )Nr;  r   rN   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   rN   rE  s     r   r"  z;TestNdEmptyLike.test_like_dtype_non_const_str.<locals>.func  rG  r   rv   rs   rH  rI  z'{}(array(float64, 1d, C), unicode_type))rC   r   r   r   r   r   r   r   rK   r   r   rJ  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 rP  rN   r'  s    r   r"  z9TestNdEmptyLike.test_like_dtype_invalid_str.<locals>.func  rR  r   rv   rS  )	rC   r   r   r   r   r   r   r   r   rT  s       @r   test_like_dtype_invalid_strz+TestNdEmptyLike.test_like_dtype_invalid_str  sv    		' 
	' {+ 	v	 V%%&?H		 	s   A==B)rK   rL   rM   r  r  r  r  r  r  r  r  r  r  r  r  r|  r}  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_likerC   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   )rK   rL   rM   r  r  r  r  r|  r}  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_likerC   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   )	rK   rL   rM   r  r  r  r  r  r|  r}  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   rc   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=   r]  r   r  )rB   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>.func2  s    <<S"((33r   r  r  s     r   r  zTestNdFullLike.test_like_dtype1  s    	4bjj)r   c                 z    t        j                  d      fd}| j                  |t         j                         y )Nr  c                 2    t        j                  | d      S r  r  )rT   r=   s    r   r"  z5TestNdFullLike.test_like_dtype_instance.<locals>.func8  s    <<S%00r   )r   r=   r  rc   r  s     @r   r  z'TestNdFullLike.test_like_dtype_instance6  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>.funcB  s    <<S'22r   r  r  s     r   r  z(TestNdFullLike.test_like_dtype_str_kwargA  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>.funcG  s    <<S44r   r  r  s     r   r  z=TestNdFullLike.test_like_dtype_str_kwarg_alternative_spellingF  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  )rT   r  rF  s      r   r"  z@TestNdFullLike.test_like_dtype_non_const_str_kwarg.<locals>.funcM  s    <<R,,r   rl   r  rs   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_kwargK  sv    		- 
	- {+ 	,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 rP  r  )rT   r  s     r   r"  z8TestNdFullLike.test_like_dtype_invalid_str.<locals>.func[  s    <<R22r   rv   g333333@rS  r   r  s       r   r  z*TestNdFullLike.test_like_dtype_invalid_strY  sn    		3 
	3 {+ 	"vS!	" V%%&?H		" 	"s   A//A8N)rK   rL   rM   r  r  r  r  r  r  r  r  r  r  r!  r  rN   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rl   rJ   rB   rC   s     r   check_identityzTestNdIdentity.check_identityh  s    6D6*r   c                 ,    d }| j                  |       y )Nc                 ,    t        j                  |       S r   r   identityr  s    r   r"  z*TestNdIdentity.test_identity.<locals>.funcl  s    ;;q>!r   )r*  r  s     r   test_identityzTestNdIdentity.test_identityk  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>.funcs  s    {{1e,,r   )r   rk  r]  r  r=   r*  r  s     @r   test_identity_dtypez"TestNdIdentity.test_identity_dtypep  sH    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-  )rj   rF  s     r   r"  z@TestNdIdentity.test_like_dtype_non_const_str_kwarg.<locals>.funcy  s    ;;q"%%r   rv   rs   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_kwargw  sl    		& 
	& {+ 	vG	 V%%&"c6"	 	   
AA'N)rK   rL   rM   r*  r/  r2  r!  rN   r   r   r%  r%  f  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 rj  r:  r  s     r   r"  z(TestNdEye.test_eye_n_dtype.<locals>.func  s    vvau--r   r<  r'  )r   r8  rk  rJ   )rB   rF  r"  s      r   test_eye_n_dtypezTestNdEye.test_eye_n_dtype  s@    Q8 	3B  .tdD\2	3r   c                 2    d }| j                  |g d       y )Nc                 .    t        j                  | |      S r   r:  rj   rt   s     r   r"  z$TestNdEye.test_eye_n_m.<locals>.func  s    66!Q<r   )r`   r   rl   r   )r   rl   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   )rl   rv   r`   )rl   rv   r  )rv   rl   )rv   rl   )rv   rl   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   r:  rj   rt   r~   s      r   r"  z&TestNdEye.test_eye_n_m_k.<locals>.func  s    66!Q?"r   rJ  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   r;  r]  rM  s      r   r"  z,TestNdEye.test_eye_n_m_k_dtype.<locals>.func  s    66Aarxx88r   rN  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 )Nr]  c                 6    t        j                  | ||      S rR  r:  )rj   rt   r~   r=   s      r   r"  z5TestNdEye.test_eye_n_m_k_dtype_instance.<locals>.func  s    66Aau55r   )r   r=   rJ  r  s     @r   test_eye_n_m_k_dtype_instancez'TestNdEye.test_eye_n_m_k_dtype_instance  s$    !	6T"r   N)
rK   rL   rM   r=  r@  rF  rJ  rO  rU  rX  rN   r   r   r7  r7    s%    /
3;
.#
#
#r   r7  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  r   rl   rv   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~   r]  )r_  r~   s     r   
func_kwargz$TestNdDiag.setUp.<locals>.func_kwarg  s    771?"r   )r   )r   array	transposevectorsrm   r   	matriciespyr:   jitpy_kwjit_kw)rB   vhvvva3x4a4x3r"  rb  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@   )rB   rC   nrtfuncrG   kwargsrH   computeds          r   
check_diagzTestNdDiag.check_diag  sd    4*6*D+F+68


(3r   c                 t    | j                   D ])  }| j                  | j                  | j                  |       + y r   )re  rt  rg  rh  rB   ds     r   test_diag_vect_createz TestNdDiag.test_diag_vect_create  s-     	2AOODGGTXXq1	2r   c                     t        dd      D ]<  }| j                  D ]+  }| j                  | j                  | j                  ||       - > y )Nir   ra  )ri   re  rt  ri  rj  rB   r~   rw  s      r   test_diag_vect_create_kwargz&TestNdDiag.test_diag_vect_create_kwarg  sJ    sB 	AA\\ A

DKKa@A	Ar   c                 t    | j                   D ])  }| j                  | j                  | j                  |       + y r   )rf  rt  rg  rh  rv  s     r   test_diag_extractzTestNdDiag.test_diag_extract  s-     	2AOODGGTXXq1	2r   c                     t        dd      D ]<  }| j                  D ]+  }| j                  | j                  | j                  ||       - > y )Nrv   ra  )ri   rf  rt  ri  rj  rz  s      r   test_diag_extract_kwargz"TestNdDiag.test_diag_extract_kwarg  sJ    r1 	AA^^ A

DKKa@A	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      ?rl   ra  )r   rc  r:   rg  r   r  r   ri  )rB   rw  rF   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.*)r:   rg  assertRaisesRegexr   )rB   rF   rL  r   s       r   test_bad_shapezTestNdDiag.test_bad_shape  sB    tww7##K5 	$K	 	 	s   	A  A	N)rK   rL   rM   r  rt  rx  r{  r}  r  r  r  rN   r   r   rZ  rZ    s,    )$42
A2
Ar   rZ  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  rC  s     r   rC   z,TestLinspace.test_linspace_2.<locals>.pyfunc  s    ;;q!$$r   ))r   rv   )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  rj   rt   r}   s      r   rC   z,TestLinspace.test_linspace_3.<locals>.pyfunc  s    ;;q!Q''r   ))r   rv   	   )r`   rv   rl   )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        r  r   )r:   assertPreciseEqualpy_func)rB   r_   rj   rt   r}   s        r   test_linspace_accuracyz#TestLinspace.test_linspace_accuracy  sH     
	( 
	(  1aAq!ckk!Q.BCr   N)rK   rL   rM   r  r  r  rN   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 rj  r\   rb   r=   s    r   rC   z7TestNpyEmptyKeyword._test_with_dtype_kw.<locals>.pyfunc  s    88E//r   r`   r   r  r:   r;   r=   rb   rB   r=   rC   shapesrF   srH   r   s    `      r   _test_with_dtype_kwz'TestNpyEmptyKeyword._test_with_dtype_kw  si    	0 v 	8AayH(CX^^SYY7X^^SYY7		8r   c                     t         j                  t         j                  t         j                  t        j                  d      fD ]  }| j                  |        y Nrk  )r   rs   r   rk  r=   r  rB   r=   s     r   test_with_dtype_kwsz'TestNpyEmptyKeyword.test_with_dtype_kws%  s=    hh

BLL"((;:OP 	,E$$U+	,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   rC   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)  si    	6 v 	8AayH(CX^^SYY7X^^SYY7		8r   c                     t         j                  t         j                  t         j                  t        j                  d      fD ]  }| j                  |        y r  )r   rs   r   rk  r=   r  r  s     r   test_with_shape_and_dtype_kwsz1TestNpyEmptyKeyword.test_with_shape_and_dtype_kws6  s=    hh

BLL"((;:OP 	6E..u5	6r   c                     d }t        |      }| j                  t              5   |        d d d        y # 1 sw Y   y xY w)Nc                  *    t        j                         S r   r\   rN   r   r   rC   z6TestNpyEmptyKeyword.test_empty_no_args.<locals>.pyfunc<  s    88:r   )r:   r   r   )rB   rC   rF   s      r   test_empty_no_argsz&TestNpyEmptyKeyword.test_empty_no_args:  s<    	 v {+ 	G	 	 	s   5>N)rK   rL   rM   r  r  r  r  r  rN   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   rc  args    r   rC   z#TestNpArray.test_0d.<locals>.pyfuncJ      88C= r   r[   r   r  )r:   r  r   rc  rx  rB   rC   rF   r   s       r   r$  zTestNpArray.test_0dI  s[    	! vBiRXXb%@ACjRXXc]3r   c                 2    d }| j                  |ddg       y )Nc                 L    t        j                  | t         j                        S rj  )r   rc  r]  r  s    r   rC   z.TestNpArray.test_0d_with_dtype.<locals>.pyfuncT      88Crxx00r   )r[   )r  r(  r)  s     r   test_0d_with_dtypezTestNpArray.test_0d_with_dtypeS  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   rC   z#TestNpArray.test_1d.<locals>.pyfuncZ  r  r   )r   rl   r[   )r  y              @r[   rN   )r:   r  r   rx  rc  rc   r  s       r   r)  zTestNpArray.test_1dY  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 rj  )r   rc  r   r  s    r   rC   z.TestNpArray.test_1d_with_dtype.<locals>.pyfunci  s    88Crzz22r   r   r[   r  r  )r`   r  r[   rN   r(  r)  s     r   test_1d_with_dtypezTestNpArray.test_1d_with_dtypeh  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   rC   z2TestNpArray.test_1d_with_str_dtype.<locals>.pyfunct  s    88Cy11r   r   r[   r  r  r  r  r(  r)  s     r   test_1d_with_str_dtypez"TestNpArray.test_1d_with_str_dtypes  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 rj  r  )r  rF  s     r   r"  z:TestNpArray.test_1d_with_non_const_str_dtype.<locals>.func  s    88Cr**r   )r   rl   rs   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_dtype~  sl    		+ 
	+ {+ 	"v!	" V%%&"c6"	" 	"r5  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   rC   z#TestNpArray.test_2d.<locals>.pyfunc  r  r   rD  rl   rv   r`   r   rl   rv   r`   r  rl   r  r  r  r  ))      ?r   )r  r  r  )rN   rN   )r:   r  r   rx  rc   r  s       r   rZ  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 rj  )r   rc  rs   r  s    r   rC   z.TestNpArray.test_2d_with_dtype.<locals>.pyfunc  r  r   r  r  r`   r   rl   rv   )r:   r  r   rs   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   rC   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   )rL  r   rB   s     r   check_raisesz-TestNpArray.test_raises.<locals>.check_raises  sG     "";/ 6MM#s6#3#345 s   AA.AAAz;array(float64, 1d, C) not allowed in a homogeneous sequencer  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   r;  )r   f4r   r   rD  )r:   
contextlibcontextmanagerr   rc  r`  r=   r  )rB   rC   rF   r  stvals   `     r   test_raiseszTestNpArray.test_raises  s   	! v		"	"	6 
#	6
  2 4 	""((B4.!	"  : < 	0288A;!./	0 K 	0 ;45B((1B'*C6BHHQK-./	0 	0	" 	"	0 	0	0 	0s$   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   rB   r"  rL  r   s       r   test_bad_arrayzTestNpArray.test_bad_array  sI    		! 
	! =##K5 	J	 	 	s	   	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  rF  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   rv   r  r  s       r   test_bad_dtypezTestNpArray.test_bad_dtype  sL    		% 
	% O##K5 	AJ	 	 	s	   
8AN)rK   rL   rM   r$  r  r)  r  r  r  rZ  r  r  r  r  rN   r   r   r  r  G  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   )rv   rl   r   r   F)orderr  .r   rm   r   r   rB   r   r   r   rw  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   )rB   r   r   s      r   assert_invalid_sizes_over_dimz/TestNpConcatenate.assert_invalid_sizes_over_dim  sO     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   axrH   r   rF   rC   rB   s
          r   checkz(TestNpConcatenate.test_3d.<locals>.check  sK    R$Y' 7!!Q3Aq!"-''X67r   c                 <    t        d      D ]  } | |||        y )Nrl   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   rH  r  )r   r   r  r  )	r    r:   r  Tr  r   rc   r   r  )rB   r   r   r   r   rw  r  r   rF   r  rC   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() )	) # 	+D33A6 +a1QR4!T*+ +	+) )+ +s   ;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   rH   r   rF   rC   rB   s        r   r  z0TestNpConcatenate.test_3d_no_axis.<locals>.check#  s-    aAH1a.C##C2r   r`   r  )r   r:   r  r  r   r  )	rB   r  r   r   r   rw  r  rF   rC   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 	! 	! 	!s   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   )rl   r   r   r[   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   r:   r   rm   r   r  r=   ra  rc  assertTypingErrorr   r   r   )rB   rC   rF   r   r   r   rw  r   s           r   test_typing_errorsz$TestNpConcatenate.test_typing_errorsC  s    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)rK   rL   rM   __doc__r  r  r  r  r  r  r
  rN   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_arraysj  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  )rB   r   s     r   assert_invalid_sizesz TestNpStack.assert_invalid_sizesr  sJ     z* 	f	A&**+	-	 	s   AA.AAAc                      || } || }| j                  |j                  |j                         | j                  |j                         |j                                y r   )r;   rb   r  flatten)rB   rC   rF   rG   rH   r   s         r   check_stackzTestNpStack.check_stacky  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   rG   rF   rC   rB   s       r   r  z#TestNpStack.check_3d.<locals>.check  s     VUQ1I,<=r   c                 4            D ]  } | |||        y r   rN   )r   r   r   rG   r  generate_starargss       r   r   z,TestNpStack.check_3d.<locals>.check_all_axes  s#    )+ %aAt$%r   )r  r  r  r   rc   )rB   rC   rF   r  r   r   r   r   rw  r  r  s   ````      @r   check_3dzTestNpStack.check_3d  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)	rB   rF   r  r   r   r   rw  r  rG   s	            r   check_runtime_errorsz TestNpStack.check_runtime_errors  sx    ""$! )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)Nrl   r  r   r   s    r   r  z.TestNpStack.test_3d.<locals>.generate_starargs  s,     a #gDyl"#s   !N)r&   r:   r  r  rB   rC   rF   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!  rN   rN   r   r   r  z6TestNpStack.test_3d_no_axis.<locals>.generate_starargs       G   N)r$   r:   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)
        r[                TN)r$   r:   r   rc  r  rB   rC   rF   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!  rN   rN   r   r   r  z4TestNpStack.check_xxstack.<locals>.generate_starargs  r"  r#  r[   r%  TN)r  r   rc  r  )rB   rC   rF   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   rv   r   )r)   r:   r)  r   rm   r  r   rB   rC   rF   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  rE  r   )rv   r   r   )r-   r0   r:   r)  r   rm   r  r   )rB   	functionsrC   rF   r   r   s         r   test_vstackzTestNpStack.test_vstack  s     -	 	7F6NEvu-		!ABAVUQ1I6		!$$V,A		!$$V,s2AVUQ1I6	7r   c                 (   t         }t        |      }| j                  ||       t        j                  d      }|dz   }| j                  |||||f       t        j                  d      j                  d      }|dz   }| j                  |||||f       y )Nr   r   r   r  r   )r3   r:   r)  r   rm   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)Nrv   r   r   rv   rl   r[   )r`   r`   r`   )
r6   r:   r   rm   r   r  r  r   rc  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)Nr   r3  r`   r  )r$   r)   r-   r3   r6   r:   r   rm   r   r	  r   r   r   )rB   rC   rF   r   r   s        r   test_bad_arrayszTestNpStack.test_bad_arrays"  s     )Y	?S 	ZF6NE		"%%f-A '') VaAMMA3vGWGWCXY	Z
 s   BB"	N)rK   rL   rM   r  r  r  r  r  r  r  r  r  r  r$  r)  r,  r/  r1  r4  r6  rN   r   r   r  r  d  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   rC   z%benchmark_refct_speed.<locals>.pyfunc.  s)     q 	AaqA	!tr   r   i'  c                               y r   rN   )rC   r   r   r   s   r   bench_pyfuncz+benchmark_refct_speed.<locals>.bench_pyfunc;  s    q!Qr   c                               y r   rN   )rF   r   r   r   s   r   bench_cfuncz*benchmark_refct_speed.<locals>.bench_cfunc>  s    aAr   )r:   r   r   r   	benchmarkprint)	r:  r<  python_time
numba_timerF   rC   r   r   r   s	       @@@@@r   benchmark_refct_speedrA  -  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   numba.core.utilsr   r  r:   r   r    r$   r&   r)   r-   r0   r3   r6   r8   rP   rX   r  r  r  r  objectr  r  r  r  r  r%  r7  rZ  r  r  r  r  
skipUnlesshasattrr  rA  rK   mainrN   r   r   <module>rN     s    
   	  	 )  + + M M &  
4t	$%0*  # &:x : 4? 4
W:< W:t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   