
    ܙd                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
mZ d dlmZmZmZ d dlmZmZmZmZ d dlZ edd          Zd Zd	 Zd
 Zd Zd Zd Zd Zd Z G d de          Z G d de          Z  G d de e          Z! G d de           Z" G d de"e          Z# G d de#          Z$ G d de"e          Z% G d de&          Z' G d  d!e'e          Z( G d" d#e(          Z) G d$ d%e)          Z* G d& d'e'e          Z+ G d( d)e          Z, G d* d+e          Z- G d, d-e          Z. G d. d/e          Z/ G d0 d1e          Z0 G d2 d3ee          Z1 G d4 d5ee          Z2 ej3         e4ed6          d7           G d8 d9ee                      Z5d: Z6e7d;k    r ej8                     dS dS )<    N)TypingError)njit)typesutilsconfig)MemoryLeakMixinTestCasetagskip_if_32bitT)_nrtnogilc                 0    t          j        | ||f          S Nnpconcatenateabcs      :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   dstackr   s      r   	np_dstackr/   %   r)   r   c                 0    t          j        | ||f          S r   )r   column_stackr   s      r   np_column_stackr2   (   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_outputs.   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__rF    r   r   r4   r4   ,   s(        : : : : : :r   r4   c                       e Zd Zd ZdS )NrtRefCtTestc                 F    |                      |j        j        |           d S r   )r7   baserefcount)r>   arrexpects      r   assert_array_nrt_refctz#NrtRefCtTest.assert_array_nrt_refct=   s#    *F33333r   N)rG   rH   rI   rR   rJ   r   r   rL   rL   <   s#        4 4 4 4 4r   rL   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 )NrJ   *   r   emptyrP   s    r   fooz'TestDynArray.test_empty_0d.<locals>.fooD   s    (2,,CCGJr      rW   rJ   {   )r6   rR   r   r;   r<   r7   r8   shaper9   float64stridesfill)r>   r[   rP   s      r   test_empty_0dzTestDynArray.test_empty_0dC   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   rY   range)nrP   is      r   r[   z'TestDynArray.test_empty_1d.<locals>.fooV   s4    (1++C1XX  AJr      r\   r]   )r6   rR   r   r;   r<   aranger7   r8   r^   r9   r_   r`   itemsizera   )r>   r[   rf   rP   s       r   test_empty_1dzTestDynArray.test_empty_1dU   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   rY   int32re   )mrf   rP   rg   js        r   r?   z*TestDynArray.test_empty_2d.<locals>.pyfunck   sb    (Aq628,,C1XX & &q & &A !AC1II& Jr      rh   r\   	r6   rR   r   r;   r<   r7   r8   r^   r`   )r>   r?   rB   rp   rf   expected_arrgot_arrs          r   test_empty_2dzTestDynArray.test_empty_2dj   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   rn   )rp   rf   prP   rg   rq   ks          r   r?   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   rr   rh      r\   rs   r>   r?   rB   rp   rf   ry   rt   ru   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   rn   )rp   rf   ry   rP   rg   rq   s         r   r?   z1TestDynArray.test_empty_2d_sliced.<locals>.pyfunc   sf    (Aq628,,C1XX & &q & &A !AC1II& q6Mr   rr   rh   r{   r\   rs   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 )Nrr   r9   c                       S r   rJ   ys   r   return_external_arrayzDTestDynArray.test_return_global_array.<locals>.return_external_array   s    Hr   r\   )r   onesfloat32sysgetrefcountr6   r7   r;   r<   gccollect)r>   	initrefctr   rB   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 )Nrr   r   c                       dd          S Nr{   rJ   r   s   r   r   zKTestDynArray.test_return_global_array_sliced.<locals>.return_external_array   s    QRR5Lr   r{   )r   r   r   r6   assertIsNonerN   r;   r<   )r>   r   rB   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   rJ   r   s    r   r?   z4TestDynArray.test_array_pass_through.<locals>.pyfunc   s    Hr   rr   r   )r   r   r   r6   r;   r<   assertIs)r>   r?   rP   rB   rD   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   )r8   r   s    r   r?   z;TestDynArray.test_array_pass_through_sliced.<locals>.pyfunc   s    QVq[\\?"r   rr   r   r\   r{   )
r   r   r   r   r   r6   r7   r;   r<   r8   )r>   r?   rP   r   rB   r   rD   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   rY   r^   add)r   r   r   s      r   r?   z=TestDynArray.test_ufunc_with_allocated_output.<locals>.pyfunc  s,    (17##CF1aJr   
   r\   r{      F      )r6   r   randomr;   r<   rR   reshape)r>   r?   rB   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   rY   r8   re   )inpr   rg   tmprq   s        r   r?   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   rJ   )r   r   rB   s     r   wrappedz0TestDynArray.test_allocation_mt.<locals>.wrappedL  s    U3ZZCFFFr   d   	worker{0}targetrC   nameN)r6   r   r   randintcopyr;   r<   re   
empty_like	threadingThreadformatappendstartjoinzip)r>   r?   r8   rP   
frozen_arrworkersinputsoutputsr   rg   r   threadr   rB   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   )rf   r   r   rg   s       r   r?   z*TestDynArray.test_refct_mt.<locals>.pyfunck  sb    (38$$C38__ $ $Q!A1XX $ $SJr   r   r   i  c                 *     | |          |d d <   d S r   rJ   )rf   inputr   rB   s      r   r   z+TestDynArray.test_refct_mt.<locals>.wrapped  s    U1e__CFFFr   r   r   r   N)r6   r   ri   floatr   r   r   	randranger;   r<   r7   re   rY   r   r   r   r   r   r   r   )r>   r?   r8   r   expected_refctswapctrD   r   r   swapctsr   rg   r   r   rB   s                 @r   test_refct_mtzTestDynArray.test_refct_mtf  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   rX   )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)r>   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
            re   r   r   trg   s       r   r?   z&TestDynArray.test_swap.<locals>.pyfunc  s-     1XX  !1a4Kr   r   r   r\   )
r6   r   r   r   r   r   rN   r;   r<   r7   )	r>   r?   rB   r   r   r   r   rQ   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   rg   s      r   r?   z7TestDynArray.test_return_tuple_of_array.<locals>.pyfunc  sF      A16]]    tax!a4Kr   r   )	r6   r   r   r   r   r   r;   r<   r7   )	r>   r?   rB   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                            ||           |                     dt          j        |                     |                     dt          j        |                     d S )Nc                     t          j        | j                  }t          |j                  D ]}| |         dz   ||<   ||f}|S r   r   )r   r   rg   r   s       r   r?   z?TestDynArray.test_return_tuple_of_array_created.<locals>.pyfunc  sK      A16]]    tax!Q$CJr   r   r{   )r6   r   r   r;   r<   r7   r   r   )r>   r?   rB   r   r   r   r   r   s           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COE22333COE2233333r   c                    t           d             fd}t          |          }t          j        d          }t          j        |          }|                     |t          j         ||                               |                     |t          j         ||                               |                     |t          j        |                     dS )z_
        Dispatcher returns a new reference.
        It need to workaround it for now.
        c                     | S r   rJ   )r   s    r   innerz7TestDynArray.test_issue_with_return_leak.<locals>.inner  s    Jr   c                      |           S r   rJ   )r   r   s    r   r?   z8TestDynArray.test_issue_with_return_leak.<locals>.pyfunc  s    588Or   r   N)r6   r   ri   r   r   r7   )r>   r?   rB   rP   	old_refctr   s        @r   test_issue_with_return_leakz(TestDynArray.test_issue_with_return_leak  s    
 
	 	 
		 	 	 	 	 vimmOC((	COFF3KK$@$@AAACOEE#JJ$?$?@@@COC$8$899999r   N)rG   rH   rI   rb   rk   rv   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rJ   r   r   rT   rT   A   s1         $  *  .  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.4 4 4*: : : : :r   rT   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\   r]   )r6   rR   r7   r8   r^   r9   r`   check_result_valuer   r   ra   r;   r<   )r>   r?   rB   rD   rE   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 )Nrh   r\   r]   negative dimensions not allowedr6   rR   r7   r8   r^   r9   r`   r   r   r   ra   r;   r<   r   
ValueErrorr   r   )r>   r?   rB   rf   rD   rE   cms          r   check_1dzConstructorBaseTest.check_1d   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{   rh   r\   r]   r{   r   r   r   )r>   r?   rB   rp   rf   rD   rE   r   s           r   check_2dzConstructorBaseTest.check_2d5  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)r6   r   r   r   r   r   )r>   r?   rB   es       r   check_alloc_sizez$ConstructorBaseTest.check_alloc_sizeJ  s    vz** 	aEGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 		
 	
 	
 	
 	
s   AAAN)rG   rH   rI   r   r   r  r  rJ   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   zerosr?   r>   	__class__s    r   r  zTestNdZeros.setUpW  s,    k4  &&(((hr   c                 F    t           j                            ||           d S r   r   r;   r<   r>   rE   rD   s      r   r   zTestNdZeros.check_result_value[       

X.....r   c                 J    | j         fd}|                     |           d S )Nc                        d          S NrJ   rJ   )r?   s   r   funcz!TestNdZeros.test_0d.<locals>.func`  s    6"::r   )r?   r   r>   r  r?   s     @r   test_0dzTestNdZeros.test_0d^  s;    	 	 	 	 	dr   c                 J    | j         fd}|                     |           d S )Nc                      |           S r   rJ   rf   r?   s    r   r  z!TestNdZeros.test_1d.<locals>.funcf  s    6!99r   r?   r   r  s     @r   test_1dzTestNdZeros.test_1dd  s;    	 	 	 	 	dr   c                 J    | j         fd}|                     |           d S )Nc                 0     | t           j                  S r   r   ro   r  s    r   r  z'TestNdZeros.test_1d_dtype.<locals>.funcl  s    6!RX&&&r   r  r  s     @r   test_1d_dtypezTestNdZeros.test_1d_dtypej  s;    	' 	' 	' 	' 	'dr   c                 v    | j         t          j        d          fd}|                     |           d S )Nro   c                      |           S r   rJ   rf   _dtyper?   s    r   r  z0TestNdZeros.test_1d_dtype_instance.<locals>.funct      6!V$$$r   )r?   r   r9   r   r>   r  r%  r?   s     @@r   test_1d_dtype_instancez"TestNdZeros.test_1d_dtype_instancep  sP    '""	% 	% 	% 	% 	% 	%dr   c                     | j         dfd}|                     |           fd}|                     |           d S )Nro   c                      |           S r   rJ   r$  s    r   r  z+TestNdZeros.test_1d_dtype_str.<locals>.func{  r&  r   c                      | d          S )N
complex128rJ   r  s    r   r  z+TestNdZeros.test_1d_dtype_str.<locals>.func  s    6!\***r   r  r'  s     @@r   test_1d_dtype_strzTestNdZeros.test_1d_dtype_strx  sq    	% 	% 	% 	% 	% 	%d	+ 	+ 	+ 	+ 	+dr   c                     | j         dfd}|                     |           fd}|                     |           d S )Ni4c                      |           S r   rJ   r$  s    r   r  z@TestNdZeros.test_1d_dtype_str_alternative_spelling.<locals>.func  r&  r   c                      | d          S )Nc8rJ   r  s    r   r  z@TestNdZeros.test_1d_dtype_str_alternative_spelling.<locals>.func  s    6!T??"r   r  r'  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   rJ   r$  s    r   r  z<TestNdZeros.test_1d_dtype_str_structured_dtype.<locals>.func  r&  r   r  r'  s     @@r   "test_1d_dtype_str_structured_dtypez.TestNdZeros.test_1d_dtype_str_structured_dtype  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   rJ   rf   dtr?   s     r   r  z5TestNdZeros.test_1d_dtype_non_const_str.<locals>.func      6!R== r   r   ro   If np.0 dtype is a string it must be a string constant.)r?   r   r   r   r   r   rG   r   r>   r  r   excstrmsgr?   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ABCDEFrJ   r  s    r   r  z3TestNdZeros.test_1d_dtype_invalid_str.<locals>.func      6!X&&&r   r   'Invalid NumPy dtype specified: 'ABCDEF')r?   r   r   r   r   r   r   r>   r  r   r?  r?   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   rJ   rp   rf   r?   s     r   r  z!TestNdZeros.test_2d.<locals>.func  s    61a&>>!r   r?   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   int16ro   rL  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int8rL  s     r   func2z/TestNdZeros.test_2d_shape_dtypes.<locals>.func2  s(    628A;;

3444r   c                      | |f          S r   rJ   rL  s     r   <lambda>z2TestNdZeros.test_2d_shape_dtypes.<locals>.<lambda>  s    1v r           r\   )	r?   r  r   	IS_32BITSr6   r   r   r   rT  )r>   rR  rV  rB   r?   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   	complex64rL  s     r   r  z-TestNdZeros.test_2d_dtype_kwarg.<locals>.func  s    61a&5555r   rM  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 )Nr_  r   rJ   rL  s     r   r  z1TestNdZeros.test_2d_dtype_str_kwarg.<locals>.func  s    61a&4444r   rM  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 )Nr2  r   rJ   rL  s     r   r  zFTestNdZeros.test_2d_dtype_str_kwarg_alternative_spelling.<locals>.func  s    61a&----r   rM  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   rJ   )r9   r?   r^   s   r   rX  z?TestNdZeros.test_alloc_size.<locals>.gen_func.<locals>.<lambda>  s    FF5%00 r   rJ   )r^   r9   r?   s   ``r   gen_funcz-TestNdZeros.test_alloc_size.<locals>.gen_func  s    0000000r   r\   r{   r   @   )r?   r   intpbitwidthr  r   )r>   widthrj  r?   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   )rG   rH   rI   r  r   r  r  r!  r(  r-  r3  r6  rA  rI  rN  r[  r`  rc  rf  ro  __classcell__r  s   @r   r  r  U  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
  rs  r  r   r   r?   r  s    r   r  zTestNdOnes.setUp  s,    j$%%'''gr   c                 H    t                                                       d S r   )r
  r6  r  s    r   r6  z-TestNdOnes.test_1d_dtype_str_structured_dtype  s    2244444r   )rG   rH   rI   r  unittestexpectedFailurer6  rp  rq  s   @r   rs  rs    sa             5 5 5 5 5 5 5 5 5r   rs  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 )NrJ         @r   fullrJ   r   r   r  z TestNdFull.test_0d.<locals>.func  s    72s###r   )r   r>   r  s     r   r  zTestNdFull.test_0d  s)    	$ 	$ 	$dr   c                 6    d }|                      |           d S )Nc                 ,    t          j        | d          S Nr}  r~  rf   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~  rf   r9   s    r   r  z/TestNdFull.test_1d_dtype_instance.<locals>.func  s    71c5)))r   )r   r9   r   r>   r  r9   s     @r   r(  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   r-  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   r3  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~  )rf   fvr:  s      r   r  z4TestNdFull.test_1d_dtype_non_const_str.<locals>.func  s    71b"%%%r   r   r}  ro   z:If np.full dtype is a string it must be a string constant.r   r   r   r   r   r   r>   r  r   r?  r@  s        r   rA  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 rD  r~  )rf   r  s     r   r  z2TestNdFull.test_1d_dtype_invalid_str.<locals>.func&  s    71b(+++r   r  r}  rG  r  r>   r  r   r?  s       r   rI  z$TestNdFull.test_1d_dtype_invalid_str$  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~  rp   rf   s     r   r  z TestNdFull.test_2d.<locals>.func1  s    7Aq63'''r   r  r  s     r   rN  zTestNdFull.test_2d0  s)    	( 	( 	(dr   c                 6    d }|                      |           d S )Nc                 H    t          j        | |fdt           j                  S )Ny      ?      @r   )r   r  r_  r  s     r   r  z,TestNdFull.test_2d_dtype_kwarg.<locals>.func6  s    7Aq682<@@@@r   r  r  s     r   r`  zTestNdFull.test_2d_dtype_kwarg5  s,    	A 	A 	Adr   c                     d }|                      |           d }|                      |           d }|                      |           d S )Nc                 T    t          j        | |ft          j        d                    S r   )r   r  ro   r  s     r   r  z0TestNdFull.test_2d_dtype_from_type.<locals>.func<  s     7Aq628A;;///r   c                 T    t          j        | |ft          j        d                    S r   )r   r  r,  r  s     r   r  z0TestNdFull.test_2d_dtype_from_type.<locals>.funcA  s"    7Aq62=#3#3444r   c                 H    t          j        | |fdt           j                  S )Nr\   r   )r   r  rU  r  s     r   r  z0TestNdFull.test_2d_dtype_from_type.<locals>.funcF  s    7Aq61BG4444r   r  r  s     r   test_2d_dtype_from_typez"TestNdFull.test_2d_dtype_from_type:  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  rQ  ro   r  s     r   rR  z.TestNdFull.test_2d_shape_dtypes.<locals>.func1L  s)    7BHQKK!5s;;;r   c                 x    t          j        t          j        |           t          j        |          fd          S r  )r   r  rT  rU  r  s     r   rV  z.TestNdFull.test_2d_shape_dtypes.<locals>.func2P  s)    7BHQKK4c:::r   c                 0    t          j        | |fd          S r  r~  r  s     r   rX  z1TestNdFull.test_2d_shape_dtypes.<locals>.<lambda>U  s    A(<(< r   rY  r\   )r  r   rZ  r6   r   r   r   rT  )r>   rR  rV  rB   s       r   r[  zTestNdFull.test_2d_shape_dtypesJ  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~  r^   values   r   rX  z>TestNdFull.test_alloc_size.<locals>.gen_func.<locals>.<lambda>\  s    BGE511 r   rJ   r  s   ``r   rj  z,TestNdFull.test_alloc_size.<locals>.gen_func[  s    111111r   r\   r{   r   rk  )r   rl  rm  r  )r>   rn  rj  s      r   ro  zTestNdFull.test_alloc_sizeY  sx    
#	2 	2 	2 	hhqEAI~q99:::hhUQY';Q??@@@@@r   N)rG   rH   rI   r   r  r  r!  r(  r-  r3  rA  rI  rN  r`  r  r[  ro  rJ   r   r   ry  ry    s        / / /  
  
  
    
  # # #
I 
I 
I  
  
   2 2 2A A A A Ar   ry  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)NrW      x)ra   	TypeErrorr   r9   rj   )r>   rP   
fill_values      r   mutate_arrayz$ConstructorLikeBaseTest.mutate_arrayd  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   )	r7   r8   r9   r:   r   r  r   r;   r<   )rP   rD   rE   rB   r?   r>   s      r   	check_arrz5ConstructorLikeBaseTest.check_like.<locals>.check_arrm  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{   rh   )rh   r\   r{   rJ   rJ   r   r{   F	WRITEABLEr\   )	r   linspaceastyper6   r   ndimflagsr   r   )r>   r?   r9   r  origr^   rP   rB   s   ``     @r   
check_likez"ConstructorLikeBaseTest.check_likel  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)rG   rH   rI   r  r  rJ   r   r   r  r  b  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   r?   r  s    r   r  zTestNdEmptyLike.setUp  ,    ot$$**,,,mr   c                     d S r   rJ   r  s      r   r   z"TestNdEmptyLike.check_result_value  s    r   c                 `    | j         fd}|                     |t          j                   d S )Nc                      |           S r   rJ   rP   r?   s    r   r  z'TestNdEmptyLike.test_like.<locals>.func      6#;;r   r?   r  r   r_   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   rJ   r  s    r   r  z2TestNdEmptyLike.test_like_structured.<locals>.func  r  r   )r   r9   rQ  r   r?   r  )r>   r9   r  r?   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 )Nro   c                      |           S r   rJ   rP   r9   r?   s    r   r  z6TestNdEmptyLike.test_like_dtype_instance.<locals>.func      6#u%%%r   )r   r9   r?   r  r_   r>   r  r9   r?   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   rJ   r  s    r   r  z8TestNdEmptyLike.test_like_dtype_structured.<locals>.func  r  r   )r   r9   rQ  r   r?   r  r_   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 r^  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 )Nro   r   rJ   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   rJ   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   rJ   r9  s     r   r  z;TestNdEmptyLike.test_like_dtype_non_const_str.<locals>.func  r;  r   rr   ro   r<  r=  z'{}(array(float64, 1d, C), unicode_type))r?   r   r   r   r   r   r   r   rG   r   r   r>  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 rD  rJ   r  s    r   r  z9TestNdEmptyLike.test_like_dtype_invalid_str.<locals>.func  rF  r   rr   rG  )	r?   r   r   r   r   r   r   r   r   rH  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#)rG   rH   rI   r  r   r  r  r  r  r  r  r  r  r  r  rp  rq  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_liker?   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   )rG   rH   rI   r  r   r  r  rp  rq  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_liker?   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   )	rG   rH   rI   r  rv  rw  r  r  rp  rq  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_likerZ   s    r   r  z&TestNdFullLike.test_like.<locals>.func      <S)))r   r  r   r_   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  rZ   s    r   r  z1TestNdFullLike.test_like_structured.<locals>.func  r  r   )r   r9   rQ  r   r  )r>   r9   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  rZ   s    r   r  z,TestNdFullLike.test_like_dtype.<locals>.func!  s    <S"(333r   r  r  s     r   r  zTestNdFullLike.test_like_dtype   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  )rP   r9   s    r   r  z5TestNdFullLike.test_like_dtype_instance.<locals>.func'  s    <S%000r   )r   r9   r  r_   r  s     @r   r  z'TestNdFullLike.test_like_dtype_instance%  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
  rZ   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  rZ   s    r   r  z6TestNdFullLike.test_like_dtype_str_kwarg.<locals>.func1  s    <S'222r   r  r  s     r   r  z(TestNdFullLike.test_like_dtype_str_kwarg0  s-    	3 	3 	3bj)))))r   c                 L    d }|                      |t          j                   d S )Nc                 0    t          j        | dd          S )Nr}  r  r   r  rZ   s    r   r  zKTestNdFullLike.test_like_dtype_str_kwarg_alternative_spelling.<locals>.func6  s    <S4444r   r  r  s     r   r  z=TestNdFullLike.test_like_dtype_str_kwarg_alternative_spelling5  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  )rP   r  r:  s      r   r  z@TestNdFullLike.test_like_dtype_non_const_str_kwarg.<locals>.func<  s    <R,,,r   rh   r}  ro   z?If np.full_like dtype is a string it must be a string constant.r   r   r   r   r   r   r   r   r  s        r   #test_like_dtype_non_const_str_kwargz2TestNdFullLike.test_like_dtype_non_const_str_kwarg:  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 rD  r  )rP   r  s     r   r  z8TestNdFullLike.test_like_dtype_invalid_str.<locals>.funcJ  s    <R222r   rr   g333333@rG  r  r  s       r   r  z*TestNdFullLike.test_like_dtype_invalid_strH  s    		3 	3 
	3 {++ 	"vDS!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" V%&&?HHHHHs   AAAN)rG   rH   rI   r   r  rv  rw  r  r  r  r  r  r  r  r  rJ   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rh   rF   r>   r?   s     r   check_identityzTestNdIdentity.check_identityW  s     6D6*****r   c                 6    d }|                      |           d S )Nc                 *    t          j        |           S r   r   identityr  s    r   r  z*TestNdIdentity.test_identity.<locals>.func[  s    ;q>>!r   )r  r  s     r   test_identityzTestNdIdentity.test_identityZ  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>.funcb  s    {1e,,,r   )r   r_  rQ  r  r9   r  r  s     @r   test_identity_dtypez"TestNdIdentity.test_identity_dtype_  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"  )rf   r:  s     r   r  z@TestNdIdentity.test_like_dtype_non_const_str_kwarg.<locals>.funch  s    ;q"%%%r   rr   ro   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_kwargf  s    		& 	& 
	& {++ 	vDG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 V%&&"c6"""""r  N)rG   rH   rI   r  r$  r'  r  rJ   r   r   r  r  U  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>.funcy  s    6!99r   r\   r  r  r  s     r   
test_eye_nzTestNdEye.test_eye_nx  s1    	 	 	4$.....r   c                     d t           j        t          j        d          fD ]}|fd}|                     |ddg            d S )Nr\   c                 .    t          j        | |          S r^  r.  r  s     r   r  z(TestNdEye.test_eye_n_dtype.<locals>.func  s    vau----r   r0  r  )r   r,  r_  rF   )r>   r:  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.  rf   rp   s     r   r  z$TestNdEye.test_eye_n_m.<locals>.func  s    6!Q<<r   )r\   r{   rh   r{   )r   rh   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   )rh   rr   r\   )rh   rr   r   )rr   rh   )rr   rh   )rr   rh   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.  rf   rp   rz   s      r   r  z&TestNdEye.test_eye_n_m_k.<locals>.func  s    6!Q??"r   r>  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Mrz   r9   )r   r/  rQ  rA  s      r   r  z,TestNdEye.test_eye_n_m_k_dtype.<locals>.func  s    6Aarx8888r   rB  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 )NrQ  c                 4    t          j        | ||          S rF  r.  )rf   rp   rz   r9   s      r   r  z5TestNdEye.test_eye_n_m_k_dtype_instance.<locals>.func  s    6Aau5555r   )r   r9   r>  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)
rG   rH   rI   r1  r4  r:  r>  rC  rI  rL  rJ   r   r   r+  r+  v  s}        / / /
3 3 3; ; ;
. . .# # #
# # #
# # # # #r   r+  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     rh   rr   c                 *    t          j        |           S r   r   diag)qs    r   r  zTestNdDiag.setUp.<locals>.func  s    71::r   r   c                 .    t          j        | |          S )Nrz   rR  )rT  rz   s     r   
func_kwargz$TestNdDiag.setUp.<locals>.func_kwarg  s    71???"r   )r   )r   array	transposevectorsri   r   	matriciespyr6   jitpy_kwjit_kw)r>   vhvvva3x4a4x3r  rW  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   )r7   r8   r9   r   r;   r<   )r>   r?   nrtfuncrC   kwargsrD   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   )rZ  ri  r\  r]  r>   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   rV  )re   rZ  ri  r^  r_  r>   rz   rl  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   )r[  ri  r\  r]  rk  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 )Nrr   rV  )re   r[  ri  r^  r_  ro  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      ?rh   rV  )r   rX  r6   r\  r   r  r   r^  )r>   rl  rB   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.*)r6   r\  assertRaisesRegexr   )r>   rB   r@  r   s       r   test_bad_shapezTestNdDiag.test_bad_shape  s    tw7##K55 	E$KKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAN)rG   rH   rI   r  ri  rm  rp  rr  ru  ry  r|  rJ   r   r   rN  rN    s        ) ) )$4 4 42 2 2
A A A2 2 2
A A A      r   rN  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  r7  s     r   r?   z,TestLinspace.test_linspace_2.<locals>.pyfunc  s    ;q!$$$r   ))r   rr   )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  rf   rp   ry   s      r   r?   z,TestLinspace.test_linspace_3.<locals>.pyfunc  s    ;q!Q'''r   ))r   rr   	   )r\   rr   rh   )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        rw  r   )r6   assertPreciseEqualpy_func)r>   r[   rf   rp   ry   s        r   test_linspace_accuracyz#TestLinspace.test_linspace_accuracy  sb     
	( 	( 
	(  1aAq!ckk!Q.B.BCCCCCr   N)rG   rH   rI   r  r  r  rJ   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 r^  rX   r^   r9   s    r   r?   z7TestNpyEmptyKeyword._test_with_dtype_kw.<locals>.pyfunc  s    8E////r   r\   r   r  r6   r7   r9   r^   r>   r9   r?   shapesrB   srD   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 Nr_  )r   ro   r   r_  r9   r  r>   r9   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  rX   r  s    r   r?   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   ro   r   r_  r9   r  r  s     r   test_with_shape_and_dtype_kwsz1TestNpyEmptyKeyword.test_with_shape_and_dtype_kws%  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   rX   rJ   r   r   r?   z6TestNpyEmptyKeyword.test_empty_no_args.<locals>.pyfunc+  s    8::r   )r6   r   r   )r>   r?   rB   s      r   test_empty_no_argsz&TestNpyEmptyKeyword.test_empty_no_args)  s    	 	 	 v {++ 	 	EGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA	A	N)rG   rH   rI   r  r  r  r  r  rJ   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   rX  args    r   r?   z#TestNpArray.test_0d.<locals>.pyfunc9      8C== r   rW   r   r  )r6   r  r   rX  rl  r>   r?   rB   r   s       r   r  zTestNpArray.test_0d8  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 r^  )r   rX  rQ  r  s    r   r?   z.TestNpArray.test_0d_with_dtype.<locals>.pyfuncC      8Crx0000r   )rW   )r  r  r  s     r   test_0d_with_dtypezTestNpArray.test_0d_with_dtypeB  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   r?   z#TestNpArray.test_1d.<locals>.pyfuncI  r  r   )r{   rh   rW   )rw  y              @rW   rJ   )r6   r  r   rl  rX  r_   r  s       r   r  zTestNpArray.test_1dH  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 r^  )r   rX  r   r  s    r   r?   z.TestNpArray.test_1d_with_dtype.<locals>.pyfuncX  s    8Crz2222r   r{   rW   r  rw  )r\   r  rW   rJ   r  r  s     r   test_1d_with_dtypezTestNpArray.test_1d_with_dtypeW  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   r?   z2TestNpArray.test_1d_with_str_dtype.<locals>.pyfuncc  s    8Cy1111r   r{   rW   r  rw  r  r  r  r  s     r   test_1d_with_str_dtypez"TestNpArray.test_1d_with_str_dtypeb  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 r^  r  )r  r:  s     r   r  z:TestNpArray.test_1d_with_non_const_str_dtype.<locals>.funco  s    8Cr****r   )r   rh   ro   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_dtypem  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   r?   z#TestNpArray.test_2d.<locals>.pyfunc|  r  r   r8  rh   rr   r\   r{   rh   rr   r\   r  rh   r}  r  r}  r  ))      ?r{   )r  r}  r  )rJ   rJ   )r6   r  r   rl  r_   r  s       r   rN  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 r^  )r   rX  ro   r  s    r   r?   z.TestNpArray.test_2d_with_dtype.<locals>.pyfunc  r  r   r  r  r\   r{   rh   rr   )r6   r  r   ro   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   r?   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   )r@  r   r>   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 sequencerw  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   r8  )r6   
contextlibcontextmanagerr   rX  rT  r9   r  )r>   r?   rB   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   r>   r  r@  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  r:  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   rr   r  r  s       r   test_bad_dtypezTestNpArray.test_bad_dtype  s    		% 	% 
	% O##K55 	DAJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAN)rG   rH   rI   r  r  r  r  r  r  rN  r  r  r  r  rJ   r   r   r  r  6  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   )rr   rh   r{   r   F)orderr   .r   ri   r   r   r>   r   r   r   rl  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   )r>   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   axrD   r   rB   r?   r>   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 )Nrh   r   )r   r   r   r   r  s       r   check_all_axesz1TestNpConcatenate.test_3d.<locals>.check_all_axes  s;    a % %aAt$$$$% %r   r\   r   r   r   r{   )r\   r{   r<  r   )r   r{   r  r   )	r   r6   r  Tr  r   r_   r   r  )r>   r  r   r   r   rl  r  r   rB   r  r?   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   rD   r   rB   r?   r>   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   r6   r  r  r   r  )	r>   r  r   r   r   rl  r  rB   r?   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   )rh   r   r   rW   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   r6   r   ri   r   r  r9   rU  rX  assertTypingErrorr   r   r   )r>   r?   rB   r   r   r   rl  r   s           r   test_typing_errorsz$TestNpConcatenate.test_typing_errors2  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)rG   rH   rI   __doc__r  r  r  r  r  r  r   rJ   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_arraysY  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  )r>   r   s     r   assert_invalid_sizesz TestNpStack.assert_invalid_sizesa  s      z** 	fEEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	A&*++	- 	- 	- 	- 	-r  c                      || } || }|                      |j        |j                   |                     |                                |                                           d S r   )r7   r^   r  flatten)r>   r?   rB   rC   rD   r   s         r   check_stackzTestNpStack.check_stackh  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   rC   rB   r?   r>   s       r   r  z#TestNpStack.check_3d.<locals>.checks  s,    VUQ1I,<=====r   c                 >                 D ]} | |||           d S r   rJ   )r   r   r   rC   r  generate_starargss       r   r  z,TestNpStack.check_3d.<locals>.check_all_axesv  s>    ))++ % %aAt$$$$% %r   )r  r  r  r   r_   )r>   r?   rB   r  r  r   r   r   rl  r  r  s   ````      @r   check_3dzTestNpStack.check_3dr  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)	r>   rB   r  r   r   r   rl  r  rC   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 )Nrh   r  r   r   s    r   r  z.TestNpStack.test_3d.<locals>.generate_starargs  sE      a # #gDyl""""# #r   N)r%   r6   r  r  r>   r?   rB   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  rJ   rJ   r   r   r  z6TestNpStack.test_3d_no_axis.<locals>.generate_starargs        GGGGGr   N)r#   r6   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)
        rW                TN)r#   r6   r   rX  r	  r>   r?   rB   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  rJ   rJ   r   r   r  z4TestNpStack.check_xxstack.<locals>.generate_starargs  r  r   rW   r  TN)r  r   rX  r	  )r>   r?   rB   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{   rr   r   )r(   r6   r  r   ri   r	  r   r>   r?   rB   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          |          }|                     ||           t          j        d          }|dz   }|                     |||||f           t          j        d                              d          }t          j        d                              d          dz   }|                     |||||f           d S )Nr   r   r  r9  r   )rr   r{   r   )r,   r6   r  r   ri   r	  r   r   s        r   test_vstackzTestNpStack.test_vstack  s    v65)))IaLLFAq	222IaLL  ((IaLL  ((3.Aq	22222r   c                 P   t           }t          |          }|                     ||           t          j        d          }|dz   }|                     |||||f           t          j        d                              d          }|dz   }|                     |||||f           d S )Nr   r   rP  r  r   )r/   r6   r  r   ri   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 )Nrr   r   rP  rr   rh   rW   )r\   r\   r\   )
r2   r6   r   ri   r   r	  r  r   rX  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 )NrP  r'  r\   r  )r#   r(   r,   r/   r2   r6   r   ri   r   r  r   r   r   )r>   r?   rB   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)rG   rH   rI   r  r  r  r  r  r	  r  r  r  r  r  r  r!  r#  r%  r(  r*  rJ   r   r   r  r  S  s           - - -C C C3 3 34	' 	' 	'< < << < <3 3 33 3 33 3 33 3 3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   r?   z%benchmark_refct_speed.<locals>.pyfunc  s-     q 	 	AaqAA!tr   r   i'  c                  "                 d S r   rJ   )r?   r   r   r   s   r   bench_pyfuncz+benchmark_refct_speed.<locals>.bench_pyfunc&  s    q!Qr   c                  "                 d S r   rJ   )rB   r   r   r   s   r   bench_cfuncz*benchmark_refct_speed.<locals>.bench_cfunc)  s    aAr   )r6   r   r   r   	benchmarkprint)	r.  r0  python_time
numba_timerB   r?   r   r   r   s	       @@@@@r   benchmark_refct_speedr5    s       6NNE
	A
	AA               /,//K--J	+	*r   __main__)9r  r   numpyr   r   rer   r   numba.core.errorsr   numbar   
numba.corer   r   r   numba.tests.supportr   r	   r
   r   rv  r6   r   r   r#   r%   r(   r,   r/   r2   r4   rL   rT   r   r  rs  ry  objectr  r  r  r  r  r  r+  rN  r~  r  r  r  
skipUnlesshasattrr  r5  rG   mainrJ   r   r   <module>rA     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
J: J: J: J: J:< J: J: J:Z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AZ AZ AZ AZ AZ/8 AZ AZ QPAZH  4 zHMOOOOO r   