
    wi                        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j6         e7ed8          d9           G d: d;ee                      Z8d< Z9e:d=k    r ej;                     dS dS )>    N)TypingError)njit)typesutilsconfig)MemoryLeakMixinTestCasetagskip_if_32bit)	PYVERSIONT)_nrtnogilc                 0    t          j        | ||f          S Nnpconcatenateabcs      j/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/site-packages/numba/tests/test_dyn_array.pynp_concatenate1r      s    >1a)$$$    c                 4    t          j        | ||f|          S Naxisr   r   r   r   r   s       r   np_concatenate2r       s    >1a)$////r   c                 0    t          j        | ||f          S r   r   stackr   s      r   	np_stack1r$      s    8Q1Ir   c                 4    t          j        | ||f|          S r   r"   r   s       r   	np_stack2r&      s    8Q1ID))))r   c                 0    t          j        | ||f          S r   )r   hstackr   s      r   	np_hstackr)           9aAYr   c                 0    t          j        | ||f          S r   )r   vstackr   s      r   	np_vstackr-   #   r*   r   c                 0    t          j        | ||f          S r   )r   	row_stackr   s      r   np_row_stackr0   &   s    <Aq	"""r   c                 0    t          j        | ||f          S r   )r   dstackr   s      r   	np_dstackr3   )   r*   r   c                 0    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dS )BaseTestTc                 t   t          |          }|D ]} || } || }|                     |j        |j                   |                     |j        |j                   |                     ||           |r!t
          j                            ||           t
          j                            ||           d S 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vt}H%,CSXx}555SY777##C222 :
''#6666
**8S9999		: 		:r   N)T)__name__
__module____qualname__rJ    r   r   r8   r8   0   s(        : : : : : :r   r8   c                       e Zd Zd ZdS )NrtRefCtTestc                 F    |                      |j        j        |           d S r   )r;   baserefcount)rB   arrexpects      r   assert_array_nrt_refctz#NrtRefCtTest.assert_array_nrt_refctA   s#    *F33333r   N)rK   rL   rM   rV   rN   r   r   rP   rP   @   s#        4 4 4 4 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dS )TestDynArrayc                 "   t           d             } |            }|                     |d           t          j                            d|           |                     |j        d           |                     |j        d           |                     |j        t          j        t          j	                             |                     |j
        d           |                    d           t          j                            d|           ~d S )Nc                  8    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    		 	 
	
 cee##C+++

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

S)))CCr   c                    t           d             }d} ||          }|                     |d           t          j                            t          j        |          |           |                     |j        |           |                     |j        |f           |                     |j	        t          j	        t          j
                             |                     |j        t          j	        t          j
                  j        f           |                    d           t          j                            d|           ~d S )Nc                 \    t          j        |           }t          |           D ]}|||<   |S r   )r   r]   range)nrT   is      r   r_   z'TestDynArray.test_empty_1d.<locals>.fooZ   s4    (1++C1XX  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   		 	 
	 c!ff##C+++

	!c2221%%%QD)))BHRZ$8$8999rx
';';'D&FGGG

S)))CCr   c                    d }t          |          }d}d} |||          } |||          }|                     |d           t          j                            ||           |                     |j        |j                   |                     |j        |j                   |                     |j        |j                   ~d S )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   sb    (Aq628,,C1XX & &q & &A !AC1II& 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va||%1++##GQ///

g666*GL999+W];;;-w???GGr   c                    d }t          |          }d}d}d} ||||          } ||||          }|                     |d           t          j                            ||           |                     |j        |j                   |                     |j        |j                   |                     |j        |j                   ~d S )Nc                     t          j        | ||ft           j                  }t          |           D ]4}t          |          D ]"}t          |          D ]}||z   |z   ||||f<   #5|S r   rr   )rt   rj   prT   rk   ru   ks          r   rC   z*TestDynArray.test_empty_3d.<locals>.pyfunc   s    (Aq!9bh//C1XX 1 1q 1 1A"1XX 1 1'(1uqyAq!G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vaA%1a..##GQ///

g666*GL999+W];;;-w???GGr   c                    d }t          |          }d}d}d} ||||          } ||||          }|                     |d           t          j                            ||           |                     |j        |j                   |                     |j        |j                   |                     |j        |j                   ~d S )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   sf    (Aq628,,C1XX & &q & &A !AC1II& q6Mr   rv   rl   r   r`   rw   r   s           r   test_empty_2d_slicedz!TestDynArray.test_empty_2d_sliced   s    	 	 	 vvaA%1a..##GQ///

g666*GL999+W];;;-w???GGr   c                 0   t          j        dt           j                  t          j                  }fd}t          |          } |            }|                     |dz   t          j                             t           j                            |           t           j                            t          j        dt           j                             t           j                            |t          j        dt           j                             ~t          j
                     |                     |dz   t          j                             ~t          j
                     |                     |t          j                             d S )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   sR   GARZ(((OA&&		 	 	 	 	 ,--egg 	Q(:(:;;;

3'''

271BJ#?#?#?@@@

RWQbj%A%A%ABBB

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

COA$6$677777r   c                    t          j        dt           j                  fd}t          |          } |            }|                     |j                   dd          }t           j                            ||           t           j                            |t          j        dt           j                             t           j                            |t          j        dt           j                             d S )Nrv   r   c                       dd          S Nr   rN   r   s   r   r   zKTestDynArray.test_return_global_array_sliced.<locals>.return_external_array   s    QRR5Lr   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    GARZ(((	 	 	 	 	 ,--egg#(###qrrU

C(((

BGARZ$@$@$@AAA

RWQbj%A%A%ABBBBBr   c                 n   d }t          j        dt           j                  }t          |          } ||          } ||          }t           j                            ||           t           j                            ||           |                     ||           |                     ||           d S )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    	 	 	 garz***v5::fSkk

#...

#...h$$$h$$$$$r   c                    d }t          j        dt           j                  }t          j        |          }t          |          } ||          }|                     |dz   t          j        |                      ||          }|                     |dz   t          j        |                     t           j                            |||j	        dz                      t           j                            ||           ~|                     |dz   t          j        |                     ~|                     |t          j        |                     d S )Nc                 &    | | j         dz  d          S r   )r<   r   s    r   rC   z;TestDynArray.test_array_pass_through_sliced.<locals>.pyfunc   s    QVq[\\?"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   s0   	# 	# 	# garz***OC((	veCjjQ(<(<===6#;;Q(<(<===

#ch!m*<===

#...Q(<(<===COC$8$899999r   c                 :   d }t          |          }t          j                            d          }t          j                            d          }t          j                             |||           |||                     |                      |||          d           t          j                            d                              dd          }t          j                            d                              dd          }t          j                             |||           |||                     |                      |||          d           t          j                            d                              ddd          }t          j                            d                              ddd          }t          j                             |||           |||                     |                      |||          d           d S )Nc                 d    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,    (17##CF1a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 4 %eU 3 3	5 	5 	5 	##EE%$7$7;;; 	  $$,,Q22	  $$,,Q22

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

ue 4 4 %eU 3 3	5 	5 	5 	##EE%$7$7;;;;;r   c                    d }t          |          d}t          j                            dd|          }|                                }t          j                             ||           |                     t          j                            ||           g }g }g }fd}t          d          D ]}	t          j                            dd|          }t          j        |          }
t          j
        |||
fd                    |	                    }|                    |           |                    |           |                    |
           |D ]}|                                 |D ]}|                                 t          ||          D ].\  }}
t          j                             ||          |
           /dS )	z
        This test exercises the array allocation in multithreaded usecase.
        This stress the freelist inside NRT.
        c                 v   t          j        | j                  }t          |j                  D ]}d||<   t          | d                   D ]m}t          j        | j                  }t          |j                  D ]}| |         ||<   t          |j                  D ]}||xx         ||         |z   z  cc<   n|S )Nr   r   r]   r<   ri   )inpr   rk   tmpru   s        r   rC   z/TestDynArray.test_allocation_mt.<locals>.pyfunc/  s    (38$$C 38__  A3q6]] ) )hsx((sx $ $A VCFFsx ) )AFFFc!fqj(FFFF) Jr   r   r`   c                 (     |           |d d <   d S r   rN   )r   r   rF   s     r   wrappedz0TestDynArray.test_allocation_mt.<locals>.wrappedP  s    U3ZZCFFFr   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)  s   	 	 	& vi2t,,XXZZ


sUU3ZZ888


C000	  	  	  	  	  s 	  	 A)##Ar400C-$$C%W,/:+6+=+=a+@+@B B BF NN6"""MM#NN3  	 	FLLNNNN  	 	FKKMMMM FG,, 	6 	6HCJ##FF3KK5555	6 	6r   c                    d }t          |          d}t          j        |t                    }t	          j        |          }t          j        d          } |||          }t          j        	                    | ||                     ~| 
                    |t	          j        |                     g }g }g }	fd}
t          d          D ]}t          j        |          }t          j        d          }t          j        |
|||fd                    |                    }|                    |           |                    |           |	                    |           |D ]}|                                 |D ]}|                                 t'          |	|          D ]/\  }}t          j        	                     |||          |           0~~| 
                    |t	          j        |                     d	S )
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  sb    (38$$C38__ $ $Q!A1XX $ $SJr   r   r   i  c                 *     | |          |d d <   d S r   rN   )rj   inputr   rF   s      r   r   z+TestDynArray.test_refct_mt.<locals>.wrapped  s    U1e__CFFFr   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  s0   
	 	 	 v	$e,,,//!$''6&%((

%%*>*>???)?)?@@@	% 	% 	% 	% 	% s 		# 		#A(4..C%d++F%W,2E3+?+6+=+=a+@+@B B BF NN6"""NN3NN6""""  	 	FLLNNNN  	 	FKKMMMM w00 	@ 	@KFCJ##FF65$9$93????W)?)?@@@@@r   c                 B   t           d             }|                                  |                     t                    5 } |t          j        j        dz  dz             d d d            n# 1 swxY w Y   |                     dt          |j	                             d S )Nc                 .    t          j        |            d S r   r\   )xs    r   r_   z1TestDynArray.test_invalid_size_array.<locals>.foo  s    HQKKKKKr      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C#q(A-...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	)3v/?+@+@AAAAAs   !A,,A03A0c                 j   d }t          |          }t          j                            d          }t          j                            d          }d}t          j        |          t          j        |          f} ||||           ||||          }}|                     |d         j                   |                     |d         j                   t          j                            ||           ~~| 	                    |t          j        |          t          j        |          f           d S )Nc                 6    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-     1XX  !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IS!!IS!!OA&&(:(::	fQ1oouuQ1~~#a&+&&&#a&+&&&

,,,CS_Q%7%79K9K$LMMMMMr   c                 h   d }t          |          }t          j                            d          }t          j        |          } ||          \  }} ||          \  }}|                     ||           |                     ||           t          j                            ||           t          j                            ||           ~~|                     |t          j        |                     |                     t          j        |          t          j        |                     d S )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  sF      A16]]    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IQOA&&	!'
JuQxxua$$$a


E222


E222COA$6$677744coe6L6LMMMMMr   c                    d }t          |          }t          j                            d          } ||          \  }} ||          \  }}t          j                            ||           t          j                            ||           t
          dv rd}n t
          dv rd}nt          t
                    |                     |t          j	        |                     |                     |t          j	        |                     d S )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  sK      A16]]    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IQ!'
JuQxxu


E222


E222## !>>> !%i000*COE,B,BCCC*COE,B,BCCCCCr   c                    t           d             fd}t          |          }t          j        d          }t          j        |          }t
          dv rc|                     dt          j         ||                               |                     dt          j         ||                               nt
          dv rc|                     |t          j         ||                               |                     |t          j         ||                               nt          t
                    |                     |t          j        |                     dS )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    588Or   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  sQ   
 
	 	 
		 	 	 	 	 vimmOC((	##Qs < <===Qc

 ; ;<<<<>>>Ys(D(DEEEYc

(C(CDDDD%i000COC$8$89999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   s4         $  *  .  2  08 8 86C C C% % %: : :,"< "< "<H?6 ?6 ?6B;A ;A ;Az B B ]BN N N4N N N.D D D6: : : : :r   rX   c                   &    e Zd Zd Zd Zd Zd ZdS )ConstructorBaseTestc                 `   t          |          } |            } |            }|                     |d           |                     |j        |j                   |                     |j        |j                   |                     |j        |j                   |                     |j        |j                   |                     ||           t          j	        |          }|
                    d           |
                    d           t          j                            ||           d S )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688egg##C+++8=111HN333HN333h&6777X...=%%c

X.....r   c                 2   t          |          }d} ||          } ||          }|                     |d           |                     |j        |j                   |                     |j        |j                   |                     |j        |j                   |                     |j        |j                   |                     ||           t          j	        |          }|
                    d           |
                    d           t          j                            ||           |                     t                    5 } |d           d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )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6!99eAhh##C+++8=111HN333HN333h&6777X...=%%c

X...z** 	bE"III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	R\**,MNNNNNs   E$$E(+E(c                 >   t          |          }d\  }} |||          } |||          }|                     |d           |                     |j        |j                   |                     |j        |j                   |                     |j        |j                   |                     |j        |j                   |                     ||           t          j	        |          }|
                    d           |
                    d           t          j                            ||           |                     t                    5 } |dd           d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )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6!Q<<eAqkk##C+++8=111HN333HN333h&6777X...=%%c

X...z** 	bE!RLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	R\**,MNNNNNs   E**E.1E.c                     t          |          }|                     t                    5 } |             ddd           n# 1 swxY w Y   |                     dt	          |j                             dS )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[  s    vz** 	aEGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 		
 	
 	
 	
 	
s   AAAN)rK   rL   rM   r  r  r  r  rN   r   r   r  r    sV        / / / O O O*O 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                 x    t          t          |                                            t          j        | _        d S r   )superr  setUpr   zerosrC   rB   	__class__s    r   r  zTestNdZeros.setUph  s,    k4  &&(((hr   c                 F    t           j                            ||           d S r   r   r?   r@   rB   rI   rH   s      r   r  zTestNdZeros.check_result_valuel       

X.....r   c                 J    | j         fd}|                     |           d S )Nc                        d          S NrN   rN   )rC   s   r   funcz!TestNdZeros.test_0d.<locals>.funcq  s    6"::r   )rC   r  rB   r"  rC   s     @r   test_0dzTestNdZeros.test_0do  s;    	 	 	 	 	dr   c                 J    | j         fd}|                     |           d S )Nc                      |           S r   rN   rj   rC   s    r   r"  z!TestNdZeros.test_1d.<locals>.funcw  s    6!99r   rC   r  r#  s     @r   test_1dzTestNdZeros.test_1du  s;    	 	 	 	 	dr   c                 J    | j         fd}|                     |           d S )Nc                 0     | t           j                  S r   r   rs   r'  s    r   r"  z'TestNdZeros.test_1d_dtype.<locals>.func}  s    6!RX&&&r   r(  r#  s     @r   test_1d_dtypezTestNdZeros.test_1d_dtype{  s;    	' 	' 	' 	' 	'dr   c                 v    | j         t          j        d          fd}|                     |           d S )Nrs   c                      |           S r   rN   rj   _dtyperC   s    r   r"  z0TestNdZeros.test_1d_dtype_instance.<locals>.func      6!V$$$r   )rC   r   r=   r  rB   r"  r1  rC   s     @@r   test_1d_dtype_instancez"TestNdZeros.test_1d_dtype_instance  sP    '""	% 	% 	% 	% 	% 	%dr   c                     | j         dfd}|                     |           fd}|                     |           d S )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    6!\***r   r(  r3  s     @@r   test_1d_dtype_strzTestNdZeros.test_1d_dtype_str  sq    	% 	% 	% 	% 	% 	%d	+ 	+ 	+ 	+ 	+dr   c                     | j         dfd}|                     |           fd}|                     |           d S )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    6!T??"r   r(  r3  s     @@r   &test_1d_dtype_str_alternative_spellingz2TestNdZeros.test_1d_dtype_str_alternative_spelling  sq    	% 	% 	% 	% 	% 	%d	# 	# 	# 	# 	#dr   c                 R    | j         dfd}|                     |           d S )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  sF    	% 	% 	% 	% 	% 	%dr   c                 *   | j         t          fd            }|                     t                    5 } |dd           d d d            n# 1 swxY w Y   t	          |j                  }d| j         j         d}|                     ||           d S )Nc                      | |          S r   rN   rj   dtrC   s     r   r"  z5TestNdZeros.test_1d_dtype_non_const_str.<locals>.func      6!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DG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 V%&&", " " "c6"""""s   AAAc                    | j         t          fd            }|                     t                    5 } |d           d d d            n# 1 swxY w Y   t	          |j                  }|                     d|           d S )Nc                      | d          S NABCDEFrN   r'  s    r   r"  z3TestNdZeros.test_1d_dtype_invalid_str.<locals>.func      6!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  s    		' 	' 	' 	' 
	' {++ 	vDGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 V%&&?HHHHHs   AAAc                 J    | j         fd}|                     |           d S )Nc                      | |f          S r   rN   rt   rj   rC   s     r   r"  z!TestNdZeros.test_2d.<locals>.func  s    61a&>>!r   rC   r  r#  s     @r   test_2dzTestNdZeros.test_2d  s;    	" 	" 	" 	" 	"dr   c                 `   | j         fd}|                     |           fd}|                     |           t          j        ret	          fd          }|                     t                    5   |t          j        d          d           d d d            d S # 1 swxY w Y   d S d S )Nc                 f     t          j        |           t          j        |          f          S r   )r   int16rs   rX  s     r   func1z/TestNdZeros.test_2d_shape_dtypes.<locals>.func1  s(    628A;;4555r   c                 f     t          j        |           t          j        |          f          S r   )r   int64int8rX  s     r   func2z/TestNdZeros.test_2d_shape_dtypes.<locals>.func2  s(    628A;;

34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 	6 	6 	6 	6e	5 	5 	5 	5 	5e 	2666677E"":.. 2 2bh}--q1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2	2 	2s   5B!!B%(B%c                 J    | j         fd}|                     |           d S )Nc                 6     | |ft           j                  S Nr   )r   	complex64rX  s     r   r"  z-TestNdZeros.test_2d_dtype_kwarg.<locals>.func  s    61a&5555r   rY  r#  s     @r   test_2d_dtype_kwargzTestNdZeros.test_2d_dtype_kwarg  s;    	6 	6 	6 	6 	6dr   c                 J    | j         fd}|                     |           d S )Nc                 "     | |fd          S )Nrk  r   rN   rX  s     r   r"  z1TestNdZeros.test_2d_dtype_str_kwarg.<locals>.func  s    61a&4444r   rY  r#  s     @r   test_2d_dtype_str_kwargz#TestNdZeros.test_2d_dtype_str_kwarg  s;    	5 	5 	5 	5 	5dr   c                 J    | j         fd}|                     |           d S )Nc                 "     | |fd          S )Nr>  r   rN   rX  s     r   r"  zFTestNdZeros.test_2d_dtype_str_kwarg_alternative_spelling.<locals>.func  s    61a&----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}|                      |d|dz
  z  t
          j                             |                      |d|dz
  z  dft
          j                             d S )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    FF5%00 r   rN   )rb   r=   rC   s   ``r   gen_funcz-TestNdZeros.test_alloc_size.<locals>.gen_func  s    0000000r   r`   r   r   @   )rC   r   intpbitwidthr  r   )rB   widthrv  rC   s      @r   test_alloc_sizezTestNdZeros.test_alloc_size  s    
#	1 	1 	1 	1 	1 	hhqEAI~rw??@@@hhUQY';RWEEFFFF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  s2           / / /        	 	 	
 
 
  # # #I I I  2 2 2       G G G G G G Gr   r  c                   B     e Zd Z fdZej         fd            Z xZS )
TestNdOnesc                 x    t          t          |                                            t          j        | _        d S r   )r  r  r  r   r   rC   r  s    r   r  zTestNdOnes.setUp  s,    j$%%'''gr   c                 H    t                                                       d S r   )r  rB  r  s    r   rB  z-TestNdOnes.test_1d_dtype_str_structured_dtype  s    2244444r   )rK   rL   rM   r  unittestexpectedFailurerB  r|  r}  s   @r   r  r    sa             5 5 5 5 5 5 5 5 5r   r  c                   b    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd ZdS )
TestNdFullc                 F    t           j                            ||           d S r   r  r  s      r   r  zTestNdFull.check_result_value  r  r   c                 6    d }|                      |           d S )Nc                  ,    t          j        dd          S )NrN         @r   fullrN   r   r   r"  z TestNdFull.test_0d.<locals>.func  s    72s###r   )r  rB   r"  s     r   r$  zTestNdFull.test_0d  s)    	$ 	$ 	$dr   c                 6    d }|                      |           d S )Nc                 ,    t          j        | d          S Nr  r  rj   s    r   r"  z TestNdFull.test_1d.<locals>.func  s    71c??"r   r  r  s     r   r)  zTestNdFull.test_1d  s)    	# 	# 	#dr   c                 6    d }|                      |           d S )Nc                 B    t          j        | dt           j                  S r  )r   r  bool_r  s    r   r"  z&TestNdFull.test_1d_dtype.<locals>.func  s    71c28,,,r   r  r  s     r   r-  zTestNdFull.test_1d_dtype  s)    	- 	- 	-dr   c                 d    t          j        d          fd}|                     |           d S )Nboolc                 0    t          j        | d          S r  r  rj   r=   s    r   r"  z/TestNdFull.test_1d_dtype_instance.<locals>.func  s    71c5)))r   )r   r=   r  rB   r"  r=   s     @r   r4  z!TestNdFull.test_1d_dtype_instance  sC      	* 	* 	* 	* 	*dr   c                 6    d }|                      |           d S )Nc                 .    t          j        | dd          S Nr  r  r  r  s    r   r"  z*TestNdFull.test_1d_dtype_str.<locals>.func  s    71c7+++r   r  r  s     r   r9  zTestNdFull.test_1d_dtype_str  s)    	, 	, 	,dr   c                 6    d }|                      |           d S )Nc                 .    t          j        | dd          S )Nr  ?r  r  s    r   r"  z?TestNdFull.test_1d_dtype_str_alternative_spelling.<locals>.func#  s    71c3'''r   r  r  s     r   r?  z1TestNdFull.test_1d_dtype_str_alternative_spelling!  s)    	( 	( 	(dr   c                     t           d             }|                     t                    5 } |ddd           d d d            n# 1 swxY w Y   t          |j                  }d}|                     ||           d S )Nc                 .    t          j        | ||          S r   r  )rj   fvrF  s      r   r"  z4TestNdFull.test_1d_dtype_non_const_str.<locals>.func)  s    71b"%%%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'  s    		& 	& 
	& {++ 	%vDsG$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% V%&&"c6"""""s   AA	A	c                     t           d             }|                     t                    5 } |dd           d d d            n# 1 swxY w Y   t          |j                  }|                     d|           d S )Nc                 .    t          j        | |d          S rP  r  )rj   r  s     r   r"  z2TestNdFull.test_1d_dtype_invalid_str.<locals>.func7  s    71b(+++r   r  r  rS  r  rB   r"  r   rK  s       r   rU  z$TestNdFull.test_1d_dtype_invalid_str5  s    		, 	, 
	, {++ 	vDsOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 V%&&?HHHHH   AAAc                 6    d }|                      |           d S )Nc                 0    t          j        | |fd          S r  r  rt   rj   s     r   r"  z TestNdFull.test_2d.<locals>.funcB  s    7Aq63'''r   r  r  s     r   rZ  zTestNdFull.test_2dA  s)    	( 	( 	(dr   c                 6    d }|                      |           d S )Nc                 H    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    7Aq682<@@@@r   r  r  s     r   rl  zTestNdFull.test_2d_dtype_kwargF  s,    	A 	A 	Adr   c                     d }|                      |           d }|                      |           d }|                      |           d S )Nc                 T    t          j        | |ft          j        d                    S r   )r   r  rs   r  s     r   r"  z0TestNdFull.test_2d_dtype_from_type.<locals>.funcM  s     7Aq628A;;///r   c                 T    t          j        | |ft          j        d                    S r   )r   r  r8  r  s     r   r"  z0TestNdFull.test_2d_dtype_from_type.<locals>.funcR  s"    7Aq62=#3#3444r   c                 H    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    7Aq61BG4444r   r  r  s     r   test_2d_dtype_from_typez"TestNdFull.test_2d_dtype_from_typeK  sk    	0 	0 	0d	5 	5 	5d	5 	5 	5dr   c                 D   d }|                      |           d }|                      |           t          j        rct          d           }|                     t
                    5   |t          j        d          d           d d d            d S # 1 swxY w Y   d S d S )Nc                 x    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)    7BHQKK!5s;;;r   c                 x    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)    7BHQKK4c:::r   c                 0    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[  s    	< 	< 	<e	; 	; 	;e 	2<<==E"":.. 2 2bh}--q1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2	2 	2s   'BBBc                     t           j        j        }d }|                      |d|dz
  z  d                     |                      |d|dz
  z  dfd                     d S )Nc                       fdS )Nc                  .    t          j                   S r   r  rb   values   r   rd  z>TestNdFull.test_alloc_size.<locals>.gen_func.<locals>.<lambda>m  s    BGE511 r   rN   r  s   ``r   rv  z,TestNdFull.test_alloc_size.<locals>.gen_funcl  s    111111r   r`   r   r   rw  )r   rx  ry  r  )rB   rz  rv  s      r   r{  zTestNdFull.test_alloc_sizej  sx    
#	2 	2 	2 	hhqEAI~q99:::hh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    s        / / /  
  
  
    
  # # #
I 
I 
I  
  
   2 2 2A A A A Ar   r  c                       e Zd Zd Zd ZdS )ConstructorLikeBaseTestc                     	 |                     d           d S # t          t          f$ r( d|j        j        z  }|                     |           Y d S w xY w)Nr[      x)re   	TypeErrorr
  r=   rn   )rB   rT   
fill_values      r   mutate_arrayz$ConstructorLikeBaseTest.mutate_arrayu  sd    	!HHRLLLLL:& 	! 	! 	!	 22JHHZ      	!s    5AAc                      fd}t          j        ddd                              |          }t                    dD ]}|dk    r|dd                              d          }n|                    |          } ||           |j        dk    r ||d d d                    d	|j        d
<                        t                    5  d|d<   d d d            n# 1 swxY w Y    ||            ||d                    d S )Nc                     |           } |           }                     |j        |j                                        |j        |j                                       ||                               ||                               |                               |           t          j                            ||           d S 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    vc{{H%**CSXx}555SY777##C222##C222c"""h'''J##C2222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}  sw   
	3 
	3 
	3 
	3 
	3 
	3 
	3 {1a##**511v: 	 	E{{233i''++ll5))IcNNNx!||	#ccc(###%*CIk""":..  A              IcNNNN 		$q's   C  C$	'C$	N)rK   rL   rM   r  r  rN   r   r   r  r  s  s2        ! ! !! ! ! ! !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                 x    t          t          |                                            t          j        | _        d S r   )r  r  r  r   r   rC   r  s    r   r  zTestNdEmptyLike.setUp  ,    ot$$**,,,mr   c                     d S r   rN   r  s      r   r  z"TestNdEmptyLike.check_result_value  s    r   c                 `    | j         fd}|                     |t          j                   d S )Nc                      |           S r   rN   rT   rC   s    r   r"  z'TestNdEmptyLike.test_like.<locals>.func      6#;;r   rC   r  r   rc   r#  s     @r   	test_likezTestNdEmptyLike.test_like  s?    	 	 	 	 	bj)))))r   c                     t          j        dt           j        fdt           j        fg          }| j        fd}|                     ||           d S )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  s^    3/C+<=>>	 	 	 	 	e$$$$$r   c                 `    | j         fd}|                     |t          j                   d S )Nc                 0     | t           j                  S r   r,  r  s    r   r"  z-TestNdEmptyLike.test_like_dtype.<locals>.func  s    6#rx(((r   r  r#  s     @r   test_like_dtypezTestNdEmptyLike.test_like_dtype  s?    	) 	) 	) 	) 	)bj)))))r   c                     t          j        d          | j        fd}|                     |t           j                   d S )Nrs   c                      |           S r   rN   rT   r=   rC   s    r   r"  z6TestNdEmptyLike.test_like_dtype_instance.<locals>.func      6#u%%%r   )r   r=   rC   r  rc   rB   r"  r=   rC   s     @@r   test_like_dtype_instancez(TestNdEmptyLike.test_like_dtype_instance  sT    !!	& 	& 	& 	& 	& 	&bj)))))r   c                     t          j        dt           j        fdt           j        fg          | j        fd}|                     |t           j                   d S )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  sf    3/C+<=>>	& 	& 	& 	& 	& 	&bj)))))r   c                 `    | j         fd}|                     |t          j                   d S )Nc                 2     | t           j                  S rj  r,  r  s    r   r"  z3TestNdEmptyLike.test_like_dtype_kwarg.<locals>.func  s    6#RX....r   r  r#  s     @r   test_like_dtype_kwargz%TestNdEmptyLike.test_like_dtype_kwarg  s?    	/ 	/ 	/ 	/ 	/bj)))))r   c                 `    | j         fd}|                     |t          j                   d S )Nc                      | d          S )Nrs   r   rN   r  s    r   r"  z7TestNdEmptyLike.test_like_dtype_str_kwarg.<locals>.func  s    6#W----r   r  r#  s     @r   test_like_dtype_str_kwargz)TestNdEmptyLike.test_like_dtype_str_kwarg  s?    	. 	. 	. 	. 	.bj)))))r   c                 `    | j         fd}|                     |t          j                   d S )Nc                      | d          S )Nr;  r   rN   r  s    r   r"  zLTestNdEmptyLike.test_like_dtype_str_kwarg_alternative_spelling.<locals>.func  s    6#T****r   r  r#  s     @r   .test_like_dtype_str_kwarg_alternative_spellingz>TestNdEmptyLike.test_like_dtype_str_kwarg_alternative_spelling  s?    	+ 	+ 	+ 	+ 	+bj)))))r   c                    | j         t          fd            }|                     t                    5 } |t	          j        d          d           d d d            n# 1 swxY w Y   t          |j                  }d| j         j         d}| 	                    ||           | 	                    d
                    j                  |           d S )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DW%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& V%&&", " " "c6"""5<<V_MM	 	 	 	 	s   A  A$'A$c                 ,   | j         t          fd            }|                     t                    5 } |t	          j        d                     d d d            n# 1 swxY w Y   t          |j                  }|                     d|           d S )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  s    		' 	' 	' 	' 
	' {++ 	vD	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 V%&&?HHHHHs   AA#&A#)rK   rL   rM   r  r  r  r  r  r  r  r  r  r  r  r  r|  r}  s   @r   r  r    s        $ $ $ $ $  * * *% % %* * ** * ** * ** * ** * ** * *  $I I I I I I Ir   r  c                   8     e Zd Z fdZd Z fdZ fdZ xZS )TestNdZerosLikec                 x    t          t          |                                            t          j        | _        d S r   )r  r  r  r   
zeros_likerC   r  s    r   r  zTestNdZerosLike.setUp  r  r   c                 F    t           j                            ||           d S r   r  r  s      r   r  z"TestNdZerosLike.check_result_value  r  r   c                 V    t          t          |                                            d S r   )r  r  r  r  s    r   r  z$TestNdZerosLike.test_like_structured  s%    ot$$99;;;;;r   c                 V    t          t          |                                            d S r   )r  r  r  r  s    r   r  z*TestNdZerosLike.test_like_dtype_structured	  s%    ot$$??AAAAAr   )rK   rL   rM   r  r  r  r  r|  r}  s   @r   r  r    s        $ $ $ $ $/ / /< < < < <B B B B B B B B Br   r  c                   f     e Zd Z fdZej         fd            Zej         fd            Z xZS )TestNdOnesLikec                     t          t          |                                            t          j        | _        d| _        d S r   )r  r  r  r   	ones_likerC   expected_valuer  s    r   r  zTestNdOnesLike.setUp  s6    nd##))+++lr   c                 V    t          t          |                                            d S r   )r  r  r  r  s    r   r  z#TestNdOnesLike.test_like_structured  s%    nd##88:::::r   c                 V    t          t          |                                            d S 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 A A A A A A Ar   r  c                   d    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S )TestNdFullLikec                 F    t           j                            ||           d S r   r  r  s      r   r  z!TestNdFullLike.check_result_value!  r  r   c                 L    d }|                      |t          j                   d S )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-    	* 	* 	*bj)))))r   c                     t          j        dt           j        fdt           j        fg          }d }|                     ||           d S )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*  sL    3/C+<=>>	* 	* 	*e$$$$$r   c                 L    d }|                      |t          j                   d S )Nc                 B    t          j        | dt           j                  S r  r   r  r  r^   s    r   r"  z,TestNdFullLike.test_like_dtype.<locals>.func2  s    <S"(333r   r  r  s     r   r  zTestNdFullLike.test_like_dtype1  s-    	4 	4 	4bj)))))r   c                 z    t          j        d          fd}|                     |t           j                   d S )Nr  c                 0    t          j        | d          S r  r  )rT   r=   s    r   r"  z5TestNdFullLike.test_like_dtype_instance.<locals>.func8  s    <S%000r   )r   r=   r  rc   r  s     @r   r  z'TestNdFullLike.test_like_dtype_instance6  sG      	1 	1 	1 	1 	1bj)))))r   c                 L    d }|                      |t          j                   d S )Nc                 D    t          j        | dt           j                  S )Nr  r   r  r^   s    r   r"  z2TestNdFullLike.test_like_dtype_kwarg.<locals>.func=  s    <S9999r   r  r  s     r   r  z$TestNdFullLike.test_like_dtype_kwarg<  s-    	: 	: 	:bj)))))r   c                 L    d }|                      |t          j                   d S )Nc                 .    t          j        | dd          S r  r  r^   s    r   r"  z6TestNdFullLike.test_like_dtype_str_kwarg.<locals>.funcB  s    <S'222r   r  r  s     r   r  z(TestNdFullLike.test_like_dtype_str_kwargA  s-    	3 	3 	3bj)))))r   c                 L    d }|                      |t          j                   d S )Nc                 0    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444r   r  r  s     r   r  z=TestNdFullLike.test_like_dtype_str_kwarg_alternative_spellingF  s-    	5 	5 	5bj)))))r   c                     t           d             }|                     t                    5 } |t          j        d          dd           d d d            n# 1 swxY w Y   t          |j                  }d}|                     ||           d S )Nc                 .    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  s    		- 	- 
	- {++ 	,vDc7+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, V%&&"c6"""""s    AAAc                    t           d             }|                     t                    5 } |t          j        d          d           d d d            n# 1 swxY w Y   t          |j                  }|                     d|           d S )Nc                 .    t          j        | |d          S rP  r  )rT   r  s     r   r"  z8TestNdFullLike.test_like_dtype_invalid_str.<locals>.func[  s    <R222r   rv   g333333@rS  r!  r  s       r   r  z*TestNdFullLike.test_like_dtype_invalid_strY  s    		3 	3 
	3 {++ 	"vDS!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" V%&&?HHHHHs   AAAN)rK   rL   rM   r  r  r  r  r  r  r  r  r  r  r"  r  rN   r   r   r	  r	    s        / / /* * * % % %* * *
* * ** * *
* * *
* * *
# # #
I 
I 
I 
I 
Ir   r	  c                   &    e Zd Zd Zd Zd Zd ZdS )TestNdIdentityc                 4    |                      |dg           d S )Nrl   rJ   rB   rC   s     r   check_identityzTestNdIdentity.check_identityh  s     6D6*****r   c                 6    d }|                      |           d S )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}|                     |           d S )Nr  r  c                 .    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  sj    lBHbh8H8H 	& 	&E- - - - -%%%%		& 	&r   c                     t           d             }|                     t                    5 } |dd           d d d            n# 1 swxY w Y   t          |j                  }d}|                     ||           d S )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  s    		& 	& 
	& {++ 	vDG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 V%&&"c6"""""r  N)rK   rL   rM   r+  r0  r3  r"  rN   r   r   r&  r&  f  sP        + + +" " "
& & &# # # # #r   r&  c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )		TestNdEyec                 <    d }|                      |ddg           d S )Nc                 *    t          j        |           S r   r   eyer  s    r   r"  z"TestNdEye.test_eye_n.<locals>.func  s    6!99r   r`   r(  r)  r  s     r   
test_eye_nzTestNdEye.test_eye_n  s1    	 	 	4$.....r   c                     d t           j        t          j        d          fD ]}|fd}|                     |ddg            d S )Nr`   c                 .    t          j        | |          S rj  r:  r  s     r   r"  z(TestNdEye.test_eye_n_dtype.<locals>.func  s    vau----r   r<  r(  )r   r8  rk  rJ   )rB   rF  r"  s      r   test_eye_n_dtypezTestNdEye.test_eye_n_dtype  s`    Q8 	3 	3B  . . . .tdD\2222	3 	3r   c                 <    d }|                      |g d           d S )Nc                 ,    t          j        | |          S r   r:  rj   rt   s     r   r"  z$TestNdEye.test_eye_n_m.<locals>.func  s    6!Q<<r   )r`   r   rl   r   )r   rl   r)  r  s     r   test_eye_n_mzTestNdEye.test_eye_n_m  s4    	  	  	 4!9!9!9:::::r   c                 6    |                      |g d           d S )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  s5    4 "- "- "- 	. 	. 	. 	. 	.r   c                 6    d }|                      |           d S )Nc                 .    t          j        | ||          S r   r:  rj   rt   r~   s      r   r"  z&TestNdEye.test_eye_n_m_k.<locals>.func  s    6!Q??"r   rJ  r  s     r   test_eye_n_m_kzTestNdEye.test_eye_n_m_k  s+    	# 	# 	#T"""""r   c                 6    d }|                      |           d S )Nc                 F    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    6Aarx8888r   rN  r  s     r   test_eye_n_m_k_dtypezTestNdEye.test_eye_n_m_k_dtype  s+    	9 	9 	9T"""""r   c                 d    t          j        d          fd}|                     |           d S )Nr]  c                 4    t          j        | ||          S rR  r:  )rj   rt   r~   r=   s      r   r"  z5TestNdEye.test_eye_n_m_k_dtype_instance.<locals>.func  s    6Aau5555r   )r   r=   rJ  r  s     @r   test_eye_n_m_k_dtype_instancez'TestNdEye.test_eye_n_m_k_dtype_instance  sE    !!	6 	6 	6 	6 	6T"""""r   N)
rK   rL   rM   r=  r@  rF  rJ  rO  rU  rX  rN   r   r   r7  r7    s}        / / /
3 3 3; ; ;
. . .# # #
# # #
# # # # #r   r7  c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )

TestNdDiagc                    t          j        g d          }t          j        g dg          }t          j        |          }|||g| _        t          j        d                              dd          }t          j        d                              dd          }||g| _        d }|| _        t          |          | _	        dd}|| _
        t          |          | _        d S )	Nr  r   rl   rv   c                 *    t          j        |           S r   r   diag)qs    r   r"  zTestNdDiag.setUp.<locals>.func  s    71::r   r   c                 .    t          j        | |          S )Nr~   r]  )r_  r~   s     r   
func_kwargz$TestNdDiag.setUp.<locals>.func_kwarg  s    71???"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    HYYYXyyyk""\"2r{y}}$$Q**y}}$$Q**	 	 	$<<	# 	# 	# 	#
Z((r   c                      ||i |} ||i |}|                      |j        |j                   |                      |j        |j                   t          j                            ||           d S r   )r;   r<   r=   r   r?   r@   )rB   rC   nrtfuncrG   kwargsrH   computeds          r   
check_diagzTestNdDiag.check_diag  s|    64*6**7D+F++666888

(33333r   c                 \    | j         D ]#}|                     | j        | j        |           $d S r   )re  rt  rg  rh  rB   ds     r   test_diag_vect_createz TestNdDiag.test_diag_vect_create  s:     	2 	2AOODGTXq1111	2 	2r   c                     t          dd          D ]/}| j        D ]%}|                     | j        | j        ||           &0d S )Nir   ra  )ri   re  rt  ri  rj  rB   r~   rw  s      r   test_diag_vect_create_kwargz&TestNdDiag.test_diag_vect_create_kwarg  sa    sB 	A 	AA\ A A
DKa@@@@A	A 	Ar   c                 \    | j         D ]#}|                     | j        | j        |           $d S r   )rf  rt  rg  rh  rv  s     r   test_diag_extractzTestNdDiag.test_diag_extract  s:     	2 	2AOODGTXq1111	2 	2r   c                     t          dd          D ]/}| j        D ]%}|                     | j        | j        ||           &0d S )Nrv   ra  )ri   rf  rt  ri  rj  rz  s      r   test_diag_extract_kwargz"TestNdDiag.test_diag_extract_kwarg  sa    r1 	A 	AA^ A A
DKa@@@@A	A 	Ar   c                    t          j        dggg          }t          | j                  }|                     t
                    5   |             d d d            n# 1 swxY w Y   |                     t                    5   ||           d d d            n# 1 swxY w Y   |                     t                    5  t          | j                  } ||d           d d d            d S # 1 swxY w Y   d S )N      ?rl   ra  )r   rc  r:   rg  r   r  r   ri  )rB   rw  rF   dfuncs       r   test_error_handlingzTestNdDiag.test_error_handling  s   HtfXtw y)) 	 	EGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 {++ 	 	E!HHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	{++ 	 	4:&&EE!qMMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s6   AA!$A!BB!B?"C..C25C2c                     t          | j                  }d}|                     t          |          5 } |d            d d d            d S # 1 swxY w Y   d S )Nz'.*The argument "v" must be array-like.*)r:   rg  assertRaisesRegexr   )rB   rF   rL  r   s       r   test_bad_shapezTestNdDiag.test_bad_shape  s    tw7##K55 	E$KKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAN)rK   rL   rM   r  rt  rx  r{  r}  r  r  r  rN   r   r   rZ  rZ    s        ) ) )$4 4 42 2 2
A A A2 2 2
A A A      r   rZ  c                        e Zd Zd Zd Zd ZdS )TestLinspacec                 <    d }|                      |g d           d S )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  sD    	% 	% 	%64 4 4	5 	5 	5 	5 	5r   c                 <    d }|                      |g d           d S )Nc                 .    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  sD    	( 	( 	(6> > >	? 	? 	? 	? 	?r   c                     t           d             }d\  }}}|                      ||||          |                    |||                     d S )Nc                 .    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  sb     
	( 	( 
	(  1aAq!ckk!Q.B.BCCCCCr   N)rK   rL   rM   r  r  r  rN   r   r   r  r    sF        5 5 5? ? ?D D D D Dr   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestNpyEmptyKeywordc                     fd}g d}t          |          }|D ]X} ||          } ||          }|                     |j        |j                   |                     |j        |j                   Yd S )Nc                 0    t          j        |           S rj  r\   rb   r=   s    r   rC   z7TestNpyEmptyKeyword._test_with_dtype_kw.<locals>.pyfunc  s    8E////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  s    	0 	0 	0 	0 	0 v 	8 	8AvayyH%((CX^SY777X^SY7777		8 	8r   c                     t           j        t           j        t           j        t          j        d          fD ]}|                     |           d S Nrk  )r   rs   r   rk  r=   r  rB   r=   s     r   test_with_dtype_kwsz'TestNpyEmptyKeyword.test_with_dtype_kws%  sK    h
BL"(;:O:OP 	, 	,E$$U++++	, 	,r   c                     fd}g d}t          |          }|D ]X} ||          } ||          }|                     |j        |j                   |                     |j        |j                   Yd S )Nc                 0    t          j        |           S )Nr  r\   r  s    r   rC   zATestNpyEmptyKeyword._test_with_shape_and_dtype_kw.<locals>.pyfunc*  s    8%u5555r   r  r  r  s    `      r   _test_with_shape_and_dtype_kwz1TestNpyEmptyKeyword._test_with_shape_and_dtype_kw)  s    	6 	6 	6 	6 	6 v 	8 	8AvayyH%((CX^SY777X^SY7777		8 	8r   c                     t           j        t           j        t           j        t          j        d          fD ]}|                     |           d S r  )r   rs   r   rk  r=   r  r  s     r   test_with_shape_and_dtype_kwsz1TestNpyEmptyKeyword.test_with_shape_and_dtype_kws6  sK    h
BL"(;:O:OP 	6 	6E..u5555	6 	6r   c                     d }t          |          }|                     t                    5   |             d d d            d S # 1 swxY w Y   d S )Nc                  (    t          j                    S r   r\   rN   r   r   rC   z6TestNpyEmptyKeyword.test_empty_no_args.<locals>.pyfunc<  s    8::r   )r:   r   r   )rB   rC   rF   s      r   test_empty_no_argsz&TestNpyEmptyKeyword.test_empty_no_args:  s    	 	 	 v {++ 	 	EGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA	A	N)rK   rL   rM   r  r  r  r  r  rN   r   r   r  r    s_        8 8 8, , ,8 8 86 6 6
 
 
 
 
r   r  c                   P    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S )TestNpArrayc                    d }t          |          } |d          }|                     |t          j        dt          j                              |d          }|                     |t          j        d                     d S )Nc                 *    t          j        |           S r   r   rc  args    r   rC   z#TestNpArray.test_0d.<locals>.pyfuncJ      8C== r   r[   r   r  )r:   r  r   rc  rx  rB   rC   rF   r   s       r   r$  zTestNpArray.test_0dI  s    	! 	! 	! veBiiRXb%@%@%@AAAeCjjRXc]]33333r   c                 <    d }|                      |ddg           d S )Nc                 B    t          j        | t           j                  S rj  )r   rc  r]  r  s    r   rC   z.TestNpArray.test_0d_with_dtype.<locals>.pyfuncT      8Crx0000r   )r[   )r  r)  r*  s     r   test_0d_with_dtypezTestNpArray.test_0d_with_dtypeS  s3    	1 	1 	1 	6E6?33333r   c                 h   d }t          |          } |g d          }|                     |t          j        g d                      |d          }|                     |t          j        g d                      |d          }|                     |t          j        d                     d S )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  s    	! 	! 	! veJJJRWZZZ%8%8999eO$$RXooo%>%>???eBiiRZ^^44444r   c                 L    d }|                      |ddgfddgfddg           d S )Nc                 B    t          j        | t           j                  S rj  )r   rc  r   r  s    r   rC   z.TestNpArray.test_1d_with_dtype.<locals>.pyfunci  s    8Crz2222r   r   r[   r  r  )r`   r  r[   rN   r)  r*  s     r   test_1d_with_dtypezTestNpArray.test_1d_with_dtypeh  sT    	3 	3 	3 	6WJ!3ZM+!	 	 	 	 	r   c                 L    d }|                      |ddgfddgfddg           d S )Nc                 .    t          j        | d          S )Nr   r   r  r  s    r   rC   z2TestNpArray.test_1d_with_str_dtype.<locals>.pyfunct  s    8Cy1111r   r   r[   r  r  r  r  r)  r*  s     r   test_1d_with_str_dtypez"TestNpArray.test_1d_with_str_dtypes  sT    	2 	2 	2 	6WJ!3ZM+!	 	 	 	 	r   c                     t           d             }|                     t                    5 } |dd           d d d            n# 1 swxY w Y   t          |j                  }d}|                     ||           d S )Nc                 .    t          j        | |          S rj  r  )r  rF  s     r   r"  z:TestNpArray.test_1d_with_non_const_str_dtype.<locals>.func  s    8Cr****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~  s    		+ 	+ 
	+ {++ 	"vD!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" V%&&"c6"""""r  c                    d }t          |          } |ddg          }|                     |t          j        ddgddgg                      |dd	g          }|                     |t          j        dd
gddgg                      |ddgddgf          }|                     |t          j        ddgddgg                      |ddgddgf          }|                     |t          j        ddgddgg                      |d          }|                     |t          j        ddgddgg                      |d          }|                     |t          j        d                     d S )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  s   	! 	! 	! veVV$%%RWq!fq!f-=%>%>???eXx())RZ!SAs80D%E%EFFFeaVaV$%%RWq!fq!f-=%>%>???eaVc3Z())RZ!Q#s0D%E%EFFFe*++RZ#qC:0F%G%GHHHeHooRZ%9%9:::::r   c                     d }t          |          } |ddg          }|                     |t          j        ddgddgg                     d S )Nc                 B    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  se    	1 	1 	1 veXx())RX1v1v.>%?%?@@@@@r   c                 t    d }t          |          }t          j         fd            } |d          5   |t          j        dg                     d d d            n# 1 swxY w Y    |d          5   |t          j        d          t          j        d          gf           d d d            n# 1 swxY w Y    |d          5  t          j        d	d
g          }t          j        d|          d         } |dt          j        d          |ff           d d d            d S # 1 swxY w Y   d S )Nc                 *    t          j        |           S r   r  r  s    r   rC   z'TestNpArray.test_raises.<locals>.pyfunc  r  r   c              3      K                        t                    5 }d V  d d d            n# 1 swxY w Y                       | t          |j                             d S r   )r   r   r   r   r   )rL  r   rB   s     r   check_raisesz-TestNpArray.test_raises.<locals>.check_raises  s      "";// 6              MM#s6#34455555s   /33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  s2   	! 	! 	! v		"	6 	6 	6 	6 
#	"	6
 \ 2 4 4 	" 	"E"(B4..!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" \ : < < 	0 	0E28A;;!.///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 \K  	0 	0 ;455B(1B'''*CE6BHQKK-.///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s6   A!!A%(A%73B66B:=B:AD--D14D1c                     t           d             }d}|                     t          |          5 } |d            d d d            d S # 1 swxY w Y   d S )Nc                 *    t          j        |           S r   r  )objs    r   r"  z(TestNpArray.test_bad_array.<locals>.func  s    8C== 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  s    		! 	! 
	! =##K55 	DJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAc                     t           d             }d}|                     t          |          5 } |dd           d d d            d S # 1 swxY w Y   d S )Nc                 ,    t          j        | |          S r   r  )r  rF  s     r   r"  z(TestNpArray.test_bad_dtype.<locals>.func  s    8C$$$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  s    		% 	% 
	% O##K55 	DAJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA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 44 4 45 5 5	 	 		 	 	# # #; ; ;*A A A0 0 0:      r   r  c                   J    e Zd ZdZd Zej        d             Zd Zd Z	d Z
dS )TestNpConcatenatez%
    Tests for np.concatenate().
    c                     t          j        d                              d          }|dz   }|dz                       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  x    IbMM!!),,FVMMM$$VTTrTNVS2X!Q1}r   c              #      K   |                      t                    5 }d V  d d d            n# 1 swxY w Y   |                     d|z  t          |j                             d S )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  s      z** 	fEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	BTI&*++	- 	- 	- 	- 	-   .22c           	         	
 t           
t          
          
 fd		fd}                                 \  }}}}} ||||            ||||            ||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            |||                    t
          j                  |                                             dD ]E}                     d          5   |dd          |||           d d d            n# 1 swxY w Y   Fd	D ]I}                     d          5   ||d d dd f         ||           d d d            n# 1 swxY w Y   Jd S )
Nc                     |d|z   fD ]6} | |||          } | |||          }	                     ||           7d S )Nr   r  )
r   r   r   r   axrH   r   rF   rC   rB   s
          r   checkz(TestNpConcatenate.test_3d.<locals>.check  sn    R$Y' 7 7!6!Q333eAq!"---''X66667 7r   c                 H    t          d          D ]} | |||           d S )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 	7 	7 	7 	7 	7 	7	% 	% 	% 	% 	% ))1aA 	q!Qq!QqsAC%%%qsAC%%%qsAC%%% 	qsAC%%% 	aeQ$$B$a((((a111QRR4!!$$$$aAaaa!""fIA&&&& 	q!((2:..222 	!!! # 	) 	)D33A66 ) )aeQ4((() ) ) ) ) ) ) ) ) ) ) ) ) ) )" 	+ 	+D33A66 + +a111QRR4!T***+ + + + + + + + + + + + + + +	+ 	+s$   ;FF"	%F"	G**G.	1G.	c                     t           t                     fd}                                 \  }}}}} ||||            ||||            ||j        |j        |j                    ||j        |j        |j                    ||j        |j        |j                    ||j        |j        |j                    ||dd          ||d d d                                                                           d          5   ||d d dd f         |           d d d            d S # 1 swxY w Y   d S )Nc                 h     | ||          } | ||          }                     ||           d S r   r  )r   r   r   rH   r   rF   rC   rB   s        r   r  z0TestNpConcatenate.test_3d_no_axis.<locals>.check#  sA    vaAH%1a..C##C2222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 	3 	3 	3 	3 	3 	3
 ))1aA 	aAaAac13ac13ac13 	ac13 	aeQ$$B$    	!!! //22 	! 	!E!QqqqtWa   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   D33D7:D7c                    t           }t          |          }t          j        d          }|                    d          }|                    t          j        dt          j        fg                    }t          j        d          }| 	                                5 } ||||           d d d            n# 1 swxY w Y   | 
                    dt          |j                             | 	                                5 } ||||           d d d            n# 1 swxY w Y   | 
                    dt          |j                             | 	                                5 } ||||           d d d            n# 1 swxY w Y   | 
                    dt          |j                             | 	                                5 } ||d|           d d d            n# 1 swxY w Y   | 
                    d	t          |j                             d S )
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IbMMIIfHHRXRW~.//00HRLL ##%% 	E!QNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	P&*++	- 	- 	- ##%% 	E!QNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	@&*++	- 	- 	- ##%% 	E!QNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	F&*++	- 	- 	- ##%% 	E!QNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	=s6CS?T?TUUUUUsH   B66B:=B:=DDDE88E<?E<?GG GN)rK   rL   rM   __doc__r  r  r  r  r  r  r  rN   r   r   r  r    s            - - -0+ 0+ 0+d"! "! "!HV V V V 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dS )TestNpStackz
    Tests for np.stack().
    c                     t          j        d                              d          }|dz   }|dz                       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   |                      t                    5 }d V  d d d            n# 1 swxY w Y   |                     dt          |j                             d S )Nz)all input arrays must have the same shaper  )rB   r   s     r   assert_invalid_sizesz TestNpStack.assert_invalid_sizesr  s      z** 	fEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	A&*++	- 	- 	- 	- 	-r  c                      || } || }|                      |j        |j                   |                     |                                |                                           d S r   )r;   rb   r  flatten)rB   rC   rF   rG   rH   r   s         r   check_stackzTestNpStack.check_stacky  sd    64=eTl
 	HN333x/?/?/A/ABBBBBr   c                    
  fd

fd}                                  \  }}}}}	 ||||            ||||            ||j        |j        |j                    ||j        |j        |j                    ||j        |j        |j                    ||j        |	j        |j                    |||                    t          j                  |           d S )Nc                 B                         | ||f|z              d S r   )r  )r   r   r   rG   rF   rC   rB   s       r   r  z#TestNpStack.check_3d.<locals>.check  s,    VUQ1I,<=====r   c                 >                 D ]} | |||           d S 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qsAC%%%qsAC%%%qsAC%%%qsAC%%% 	q!((2:..22222r   c                 8   |                                   |                                  |                                 \  }}}}}|                                 5  t	           |                      } ||d d         ||g|R   d d d            d S # 1 swxY w Y   d S )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  s    ""$$$!!! ))1aA&&(( 	' 	'))++,,DE!CRC&!Q&&&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   +BBBc                     t           }t          |          }d }|                     |||           |                     ||           dS )z(
        stack(3d arrays, axis)
        c               3   H   K   t          d          D ]} | fV  d| z   fV  d S )Nrl   r  r   r   s    r   r  z.TestNpStack.test_3d.<locals>.generate_starargs  sE      a # #gDyl""""# #r   N)r&   r:   r  r  rB   rC   rF   r  s       r   r  zTestNpStack.test_3d  sY     v	# 	# 	#
 	fe%6777!!%):;;;;;r   c                     t           }t          |          }d }|                     |||           |                     ||           dS )z"
        stack(3d arrays)
        c               3      K   dV  d S r!  rN   rN   r   r   r  z6TestNpStack.test_3d_no_axis.<locals>.generate_starargs        GGGGGr   N)r$   r:   r  r  r   s       r   r  zTestNpStack.test_3d_no_axis  sY     v	 	 	 	fe%6777!!%):;;;;;r   c                     t           }t          |          }t          j        d          }t          j        d          }t          j        d          }|                     |||||f           dS )z"
        stack(0d arrays)
        r[                TN)r$   r:   r   rc  r  rB   rC   rF   r   r   r   s         r   r$  zTestNpStack.test_0d  s_     vHRLLHSMMHTNNAq	22222r   c                     d }|                      |||           t          j        d          }t          j        d          }t          j        d          }|                     |||||f           dS )zC
        3d and 0d tests for hstack(), vstack(), dstack().
        c               3      K   dV  d S 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  su    	 	 	 	fe%6777HRLLHSMMHTNNAq	22222r   c                    t           }t          |          }|                     ||           t          j        d          }t          j        d          dz   }|                     |||||f           t          j        d                              d          }t          j        d                              d          dz   }|                     |||||f           d S )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)))IaLLIaLL2Aq	222IaLL  ((IaLL  ((3.Aq	22222r   c                    t           t          g}|D ]}t          |          }|                     ||           t	          j        d          }|dz   }|                     |||||f           t	          j        d                              d          }t	          j        d                              d          dz   }|                     |||||f           d S )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     -	 	7 	7F6NNEvu---	!ABAVUQ1I666	!$$V,,A	!$$V,,s2AVUQ1I6666	7 	7r   c                 P   t           }t          |          }|                     ||           t          j        d          }|dz   }|                     |||||f           t          j        d                              d          }|dz   }|                     |||||f           d S )Nr   r   r   r  r   )r3   r:   r)  r   rm   r  r   r+  s        r   test_dstackzTestNpStack.test_dstack  s    v65)))IaLLFAq	222IbMM!!&))GAq	22222r   c                 r   t           }t          |          }t          j        d          }|dz   }t          j        d                              d          }|                     |||||f           |                                  |                                  t          j        d          }| 	                                5   ||||f           d d d            n# 1 swxY w Y   |                    d          }| 	                                5   ||||f           d d d            d S # 1 swxY w Y   d S )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IaLLFIbMM!!&))Aq	222 	""$$$!!! HRLL##%% 	 	E1a)	 	 	 	 	 	 	 	 	 	 	 	 	 	 	IIi  ##%% 	 	E1a)	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   CC #C D,,D03D0c                 z   t           t          t          t          t          fD ]}t          |          }t          j        d                              d          }| 	                                5 } ||d|           d d d            n# 1 swxY w Y   | 
                    dt          |j                             d S )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 	ZF6NNE	"%%f--A '')) VaA              MMA3vGWCXCXYYYY	Z 	Zs   -B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  s           - - -C C C3 3 34	' 	' 	'< < << < <3 3 33 3 33 3 37 7 7$3 3 3  *Z Z Z Z Zr   r  c                  `   d t                    t          j                            d          t          j                            d          dfd} fd}t          j        |           }t          j        |          }t          |           t          |           d S )Nc                 6    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aqAA!tr   r   i'  c                  "                 d S r   rN   )rC   r   r   r   s   r   bench_pyfuncz+benchmark_refct_speed.<locals>.bench_pyfunc;  s    q!Qr   c                  "                 d S 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  -  s       6NNE
	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 M M M M M M M M M M & & & & & &  
4t	$	$	$% % %0 0 0  * * *          # # #     & & &: : : : :x : : : 4 4 4 4 4? 4 4 4
W: W: W: W: W:< W: W: W:tD
 D
 D
 D
 D
, D
 D
 D
NNG NG NG NG NG%x NG NG NGb5 5 5 5 5 5 5 5nA nA nA nA nA$h nA nA nAb+ + + + +f + + +\YI YI YI YI YI-x YI YI YIxB B B B Bo B B B A A A A A_ A A A$DI DI DI DI DI,h DI DI DIN# # # # #X # # #B)# )# )# )# )# )# )# )#XF F F F F F F FPD D D D D8 D D D8- - - - -( - - -`O O O O O/8 O O OdHV HV HV HV HV HV HV HVV WWR))+OPPEZ EZ EZ EZ EZ/8 EZ EZ QPEZP  4 zHMOOOOO r   