
    iiW_                     0   d dl Z d dlZd dlmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZ d dlmZmZmZmZmZmZmZ  G d d          Z G d d          Z G d d	          Z G d
 d          Z G d d          Z G d d          Zd Z G d d          Zd Z  G d d          Z!d Z"d Z#e j$        %                    dddddgdg          d             Z&d Z'd  Z(d! Z)d" Z*d# Z+d$ Z,d% Z-e j$        %                    d&g d'          d(             Z.d) Z/d* Z0dS )+    N)c_diag_indicesdiag_indices_fromfill_diagonal	index_expix_mgridndenumeratendindexogridr_s_)assert_assert_almost_equalassert_array_almost_equalassert_array_equalassert_equalassert_raisesassert_raises_regexc                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                            dg d	          d
             Zd Zd ZdS )TestRavelUnravelIndexc                 
	   t          t          j        dd          d           t          t          j        dd          d           t          t                    5  t          j        dd           d d d            n# 1 swxY w Y   t          t                    5  t          j        dd           d d d            n# 1 swxY w Y   t          t                    5  t          j        dd	           d d d            n# 1 swxY w Y   t          t                    5  t          j        dd
           d d d            n# 1 swxY w Y   t          t          j        dd          d           t          t          j        dd          d           t          t          j        dd          d           t          t          t          j        dd           t          t          t          j        dd           t          t          t          j        dd           t          t          t          j        dd           t          t          t          j        dd           t          t          t          j        dd           t          t          t          j        dd           t          t          t          j        dd           t          t          j        dd          g d           t          t          j        g dd          d           t          j        g dg dg          }t          t          j        |d          g d           t          t          j        |dd          g d           t          t          j        |dd           g d!           t          t          j        |d"d#           g d$           t          t          j        d%d&          d'           t          t          j        t          j        g d          d          g dg dg           t          t          j        t          j        g d          dd          g dg dg           t          t          j        d'd&          g d%           d S )(N   r   r      r   )indicesshape)r   hape)r      )   ^   )ims)dims)r   B   g      ?   )r   )r   r   )r   r(   r   r   )皙?g        .   )r'         r   r   r'   )r,   r-   r-   )r'      r   )   r-   )   )   %   Forder)   r2      )r'   r-   clipmode)r1         r'   r'   )r9   wrap)   r8   r8   )r,   r   r'   r   )r-   r0      	   iU  )r   npunravel_indexr   	TypeErrorravel_multi_index
ValueErrorarray)selfarrs     \/var/www/html/ecfs/ecfsenv/lib/python3.11/site-packages/numpy/lib/tests/test_index_tricks.py
test_basicz TestRavelUnravelIndex.test_basic   s1   R%a00&999 	R%a,24 4 4&,	. 	. 	. 9%% 	5 	5QV4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 9%% 	- 	-QV,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 9%% 	0 	0Sh////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 9%% 	1 	1Sx0000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	R)&&991===R%c844g>>>R)'8<<cBBBj""2B???i!13???j""2Av>>>j""6HHHj""6GGGj""6HHHj""6GGGi!5y&IIIR%&99EEyyyQQQ I668K	M 	M 	M h			999-..R)#v66EEE fC888,,,	H 	H 	H f6:::LLL	J 	J 	JR)#v<LMMM!\\	# 	# 	#R),EEtLLLR%bh|||&<&<fEEii+	- 	- 	-RXlll33V3GGGYY			"	$ 	$ 	$ 	R%dL99<<<HHHHHsH   A??BBCCC DD
D"EE	E	c           	         d}d}t          t          |t          j        g d           t          t          |t          j        dd           t          t          |t          j        t          j        g           d           t          t          j        t          j        g t                    d          g g g g           t          t          |t          j        g g fd           t          t          |t          j        g dgfd           t          t          |t          j        t          j        g           t          j        g           fd           t          t          j        t          j        g t                    t          j        g t                    fd          g            t          t          j        t          j        g g gt                    d          g            d S )	Nz9indices must be integral: the provided empty sequence waszonly int indices permitted)
   r,   r/    dtyperN   r,   abc)r/   r,   )r   rE   rC   rD   rH   r   intrF   )rI   msg1msg2s      rK   test_empty_indicesz(TestRavelUnravelIndex.test_empty_indicesU   s   J+ItR-=r:NNNItR-=r:NNNItR-=rx||&	( 	( 	(R%bhr&=&=&=zJJ"b\	# 	# 	#ItR-AB8#	% 	% 	%ItR-AB=#	% 	% 	%ItR-AXb\\28B<<0&	: 	: 	:R)"C((("(2S*A*A*ABFL LMO	Q 	Q 	QR)"(B83*G*G*G  	" 	" 	" 	" 	"    c                    t           j        t           j        k    r<ddgddgddgddgdd	gddgd
dgf}t          t          j        |d          ddg           t          t          t           j        dd           d
gd
gf}t          j        t           j                  j	        dz  }t          t          j        ||df          d
g           t          t          t           j        ||dz   df           t          t          j        ||dfd          d
g           t          t          t           j        ||dz   dfd           d S )Nr      r,   r/   u   r=   r   iK	  i  r   )r2   r0   x   $   i
  rA   r-   l   z l   nm )l    l       r4   r5   )
rC   intpint64r   rF   r   rG   rD   iinfomax)rI   rJ   	dummy_arrhalf_maxs       rK   test_big_indicesz&TestRavelUnravelIndex.test_big_indicesi   sx   7bhr7QFQHr1g$<!Q!Q1C$S*FGG\*, , ,
 	j""2A7MNNN S1#J	8BG$$(A- XqM::QC	A 	A 	Aj )hlA->	@ 	@ 	@ XqMEEEs	L 	L 	Lj )hlA->c	K 	K 	K 	K 	K 	KrX   c           	      &   t           j        t           j        t           j        t           j        t           j        t           j        fD ]}t          j        g dg dg|          }d}d|d         z  |d         z   }t          t          j	        ||          |           t          |t          j
        ||                     |d         d|d         z  z   }t          t          j	        ||d	
          |           t          |t          j
        ||d	
                     t          j        g dg dg dg|          }d}dd|d         z  |d         z   z  |d         z   }t          t          j	        ||          |           t          |t          j
        ||                     |d         d|d         d|d         z  z   z  z   }t          t          j	        ||d	
          |           t          |t          j
        ||d	
                     d S )N)r   r   r   r   r,   r'   )r   r-   r   r,   r   r   rP   )r/   rA   rA   r   r   r/   r4   r5   )r   r,   r   r   rB   r/   )r/   rA   rN   rN   r   )rC   int16uint16int32uint32r_   uint64rH   r   rF   rD   )rI   rQ   coordsr   uncoordss        rK   test_dtypesz!TestRavelUnravelIndex.test_dtypes   s5   h	28i296 	O 	OEX###%7%7%78G G GFE6!9}vay0H-fe<<hGGG!1(E!B!BCCCay1vay=0H$VU#>>>J J J!1(E!M!M!MNNNX###%7%7%79K9K9KL  F EQ]VAY67&)CH-fe<<hGGG!1(E!B!BCCCay1q	Aq	M(A#BBH$VU#>>>J J J!1(E!M!M!MNNNN/	O 	OrX   c                 <   t          t          j        g ddd          t          j        g dd                     t          t          j        g ddd          t          j        g dd                     t          t          t          j        g dd           d S )N)r/   r   r&   r   )r'   r,   r0   r@   r?   r:   )r   r   r-   r   )r?   raiser9   ro   )r   r   r   r   )r   rC   rF   r   rG   rI   s    rK   test_clipmodesz$TestRavelUnravelIndex.test_clipmodes   s     FKKK }==	? 	? 	? 	R)---0PQ Q Q ),,,FF	H 	H 	H 	,mmm]	L 	L 	L 	L 	LrX   c                     t          j        g dd          \  }}t          |j        j                   t          |j        j                   d S )Nr   r   r,   )r'   r/   )rC   rD   r   flags	writeable)rI   xys      rK   test_writeabilityz'TestRavelUnravelIndex.test_writeability   sH    			6221!"""!"""""rX   c                     t          j        dd          }t          |d           t          t          dt           j        dgd           t          t          dt           j        dgd           d S )Nr   rO   z0d arrayzout of boundsr   )rC   rD   r   r   rG   rI   rv   s     rK   test_0dzTestRavelUnravelIndex.test_0d   sp    Q##QJ
B4Dqc2NNN)9A3	D 	D 	D 	D 	DrX   r;   )r9   r?   ro   c                 N   t          j        t          j        dt           j                  d|          }|j        dk    sJ t          t                    5  t          j        t          j        dt           j                  d|           d d d            d S # 1 swxY w Y   d S )N)r,   r   rP   r   r   r   r:   r   )r,   r   )rC   rF   zerosr^   r   r   rG   )rI   r;   ress      rK   test_empty_array_ravelz,TestRavelUnravelIndex.test_empty_array_ravel   s   "HV27333YTK K KyD    :&& 	K 	K HV27333YTK K K K	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	Ks   6BB!Bc                 R   t          j        t          j        dt           j                  d          }t	          |          dk    sJ t          d |D                       sJ t          t                    5  t          j        dgd           d d d            d S # 1 swxY w Y   d S )Nr   rP   r}   r,   c              3   ,   K   | ]}|j         d k    V  dS )r~   Nr   ).0as     rK   	<genexpr>zATestRavelUnravelIndex.test_empty_array_unravel.<locals>.<genexpr>   s(      00q17d?000000rX   r   )rC   rD   r   r^   lenallr   rG   )rI   r   s     rK   test_empty_array_unravelz.TestRavelUnravelIndex.test_empty_array_unravel   s    rx9999EE3xx1}}}}00C00000000:&& 	- 	-aS),,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   8BB #B c                 r    t          j        t          j        g dgt           j                  d           d S )N)r   r   r   r   rP   )r'   )rC   rD   rH   ri   rp   s    rK   test_regression_size_1_indexz2TestRavelUnravelIndex.test_regression_size_1_index   s4     	<<<.	BBBDIIIIIrX   N)__name__
__module____qualname__rL   rW   rd   rm   rq   rx   r{   pytestmarkparametrizer   r   r   rO   rX   rK   r   r      s        5I 5I 5In" " "(K K K0O O O6
L 
L 
L# # #D D D [V%>%>%>??K K @?K- - -J J J J JrX   r   c                       e Zd Zd Zd Zd Zd Zej        	                    dddg          d             Z
d	 Zd
 Zd ZdS )TestGridc                    t           ddd         }t           ddd         }t          |j        dk               t          |j        dk               t          |d         dk               t          |d         d           t          |d         dk               t          |d         |d         z
  dd           t          |d         |d         d	z   d           t          |d         |d         z
  d
d           d S )Nr&   r                 $@r*   )rN   )   r      ggfffff?gqq?)r	   r   r   r   )rI   r   bs      rK   rL   zTestGrid.test_basic   s    "Qs(O"Qs(O5 !!!5 !!!!
AbE1%%%!
AaD1Q4Kb111AbE1Q4(?B777AaD1Q4KB77777rX   c                     t          j        ddd          \  }}t          |d           t          |t          ddd         d           d S )Nr   rN   T)retstepg9/?y              I@r8   )rC   linspacer   r   r	   )rI   rw   sts      rK   test_linspace_equivalencez"TestGrid.test_linspace_equivalence   sN    Ar40002B)))!!U1R8_b99999rX   c                 d   t           ddddddf         }t           ddddddf         }t          |j        dk               t          |j        d	k               t          |d
         d
d d f         t	          j        dd                      t          |d         d d d
f         dt	          j        dd          z             t          |d
         dd d f         t	          j        dd          d           t          |d         d d df         dt	          j        dd          z  d           t          |d
dd d f         |d
d
d d f         z
  dt	          j        dd          z  d           t          |dd d df         |dd d d
f         z
  dt	          j        dd          z  d           d S )Nr&   r   r   r   r*   g?)r   rN   rN   )r   r   r   r   rN   dr   r   )r	   r   r   r   rC   onesr   )rI   cr   s      rK   test_ndzTestGrid.test_nd   s   "Qs(BqH$%"Qs(BqH$%;&''';&'''1Q4111:C(8(8'89991Q41:rBGB,<,<'<===!!A$r111u+rwr3/?/?DDD!!A$qqq"u+q272s3C3C/CRHHH!!Aq!!!G*qAqqqz"9"%C(8(8"8"	> 	> 	>!!Aqqq!G*qAAAqz"9"%C(8(8"8"	> 	> 	> 	> 	>rX   c                     t           ddddddf         }t          ddddddf         }t          j        | }t	          ||          D ]\  }}t          ||           d S )Nr&   r   r   r   r   )r	   r   rC   broadcast_arrayszipr   )rI   	grid_fullgrid_sparsegrid_broadcastfr   s         rK   test_sparsezTestGrid.test_sparse   s    "Qs(BqH,-	BqHb3h./ ,k:	>22 	 	DAqA	 	rX   zstart, stop, step, expected)NrN   r   )   rN   )ir   N)i     c                     t           ||||||f         }t           |||         }t          |j        |d                    t          |j        |d                    d S )Nr   r   )r	   r   size)rI   startstopstepexpectedgrid
grid_smalls          rK   test_mgrid_size_none_handlingz&TestGrid.test_mgrid_size_none_handling   sc     U4_eDo56 5d?+
TY,,,Z_hqk22222rX   c                 B   t           dddf         }t           t          j        d          t          j        d          t          j        d          f         }t          ||           |j        t          j        k    sJ |j        t          j        k    sJ t           ddd         }t           t          j        d          t          j        d          t          j        d                   }t          |j        t          j        k               t          ||           d S )Nr*   Q?)r	   rC   float32r   rQ   float64r   )rI   grid64grid32s      rK   test_accepts_npfloatingz TestGrid.test_accepts_npfloating  s    s4|}&rz#rz$'7'7
3GHJ!&&111|rz))))|rz)))) s4|$rz#rz$'7'7
3GH
*+++!&&11111rX   c                 B   t           dddf         }t           t          j        d          t          j        d          t          j        d          f         }t          |j        t          j        k               t          ||           t           dt          j        d          d         }t           dt          j        d          df         }t          |j        |j        cxk    ot          j        k    nc            t          ||d                    t           ddd         }t           t          j        d          t          j        d          t          j        d                   }t          |j        t          j        k               t          ||           d S )Nr*   r   r   r   y        333333@)r	   rC   
longdoubler   rQ   r   r   )rI   r   grid128
grid128c_a
grid128c_bs        rK   test_accepts_longdoublez TestGrid.test_accepts_longdouble  sd   s4|}&M#r}T222=3E3EEF
 	.///!&'2221R]1--d23
1R]1--d235

 J$4EEEEEEEEFFF:z!}555 s4|$M#r}T222=3E3EE
 	.///!&'22222rX   c           	         t          t          dddf         t          ddt          j        d          f                    t          t          ddd         t          ddt          j        d                              t          ddd         }t          dddf         d         }t	          |j        |j        cxk    ot          j        k    nc            t          ||           t          ddt          j        d                   }t          ddt          j        d          f         d         }t	          |j        |j        cxk    ot          j	        k    nc            t          ||           d S )Nr*   g333333?y              @y        ffffff
@r   )
r   r	   rC   	complex64r   rQ   r   r   clongdoubler   )rI   grid64_agrid64_b	grid128_a	grid128_bs        rK   test_accepts_npcomplexfloatingz'TestGrid.test_accepts_npcomplexfloating-  sf   !#c"*+s3r|B/?/?'?'@!B	
 	
 	

 	"#c"*uSR\"-=-=%=>	
 	
 	

 S&S(+(.>>>>BJ>>>>???8X...#c"."6"667	#c"."6"6679!<		9?CCCCbmCCCCDDD8X.....rX   N)r   r   r   rL   r   r   r   r   r   r   r   r   r   r   rO   rX   rK   r   r      s        
8 
8 
8: : :
> > >   [:"#=
  
3 
3	 
32 2 23 3 3,/ / / / /rX   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestConcatenatorc                     t          t          d         t          j        g d                     t          j        d          }t          |dd|f         }t          |g d           d S )N)r   r   r,   r'   r/   r-   r/   r   )r   r   r   r   r   r   r   r   r   r   r   r   )r   r   rC   rH   r   )rI   r   r   s      rK   test_1dzTestConcatenator.test_1dE  sd    2./:L:L:L1M1MNNNGAJJq!QzN1BBBCCCCCrX   c                 X    t           dddf         }t          |j        dk               d S )Ng333333$@r   rN   f8)r   r   rQ   rI   gs     rK   test_mixed_typez TestConcatenator.test_mixed_typeK  s-    tQrTzN4     rX   c                     t           dt          j        dg          t          j        g d          df         }t          |j        dk               d S )Ng333333$r   )r   r,   r'   g      $@r   )r   rC   rH   r   rQ   r   s     rK   test_more_mixed_typez%TestConcatenator.test_more_mixed_typeO  sG    ubhsmmRXiii%8%8$>?4     rX   c                     t           ddd         }t          |j        dk               t           ddt          j        d                   }t          |j        dk               d S )Nr   r]   y              Y@)d   )r   r   r   rC   r   r   s     rK   test_complex_stepz"TestConcatenator.test_complex_stepS  s^    qDyM6!""" qBL&&&'6!"""""rX   c                    t           j                            dd          }t           j                            dd          }t          d||f         }t	          |j        dk               t          |d d d df         |           t          |d d dd f         |           t          ||f         }t	          |j        dk               t          |d dd d f         |           t          |dd d d f         |           d S )Nr/   1)r/   rN   )rN   r/   )rC   randomrandr   r   r   r   )rI   r   r   r   s       rK   test_2dzTestConcatenator.test_2d\  s    INN1a  INN1a  sAqyM7"###1QQQU8Q'''1QQQU8Q'''q!tH7"###1RaRU8Q'''1QRRU8Q'''''rX   c                 6   t          t          dt          j        d          df         g d           t          t          g dt          j        d          f         g d           t          t          t          j        d          g df         g d           d S )Nr   r   r   r   r   r   r,   )r   r   r   r,   rs   )r   r   rC   rH   rp   s    rK   r{   zTestConcatenator.test_0dh  s    R28A;;)*III666R			28A;;./>>>RYYY./>>>>>rX   N)	r   r   r   r   r   r   r   r   r{   rO   rX   rK   r   r   D  sq        D D D! ! !! ! !# # #
( 
( 
(? ? ? ? ?rX   r   c                       e Zd Zd ZdS )TestNdenumeratec                     t          j        ddgddgg          }t          t          t	          |                    g d           d S )Nr   r   r,   r'   ))r   r   r   ))r   r   r   )r   r,   ))r   r   r'   )rC   rH   r   listr
   rI   r   s     rK   rL   zTestNdenumerate.test_basico  sX    Hq!fq!f%&&T+a..))III	K 	K 	K 	K 	KrX   N)r   r   r   rL   rO   rX   rK   r   r   n  s(        K K K K KrX   r   c                       e Zd Zd Zd ZdS )TestIndexExpressionc                     t          j        d          }t          |d d         |t          d d                             t          |d d         |t          d d                             d S )Nr   r&   )rC   aranger   r   r   r   s     rK   test_regression_1z%TestIndexExpression.test_regression_1v  s^    IaLLQssVQr#2#wZ(((QssVQy"~./////rX   c           	      ,   t           j                            ddd          }t          |d d d dddgf         |t          d d d dddgf                             t          |d d d dddgf         |t
          d d d dddgf                             d S )Nr'   r/   r-   r,   r   r   )rC   r   r   r   r   r   r   s     rK   test_simple_1z!TestIndexExpression.test_simple_1|  s    INN1a##Qqqq"1"q!f}%q111bqb1a&=)A'BCCCQqqq"1"q!f}%qAAArrAq6M):';<<<<<rX   N)r   r   r   r   r   rO   rX   rK   r   r   u  s2        0 0 0= = = = =rX   r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestIx_c                    t          j        t          d                    \  }t          |j        t           j                   t          j        g           \  }t          |j        t           j                   t          j        t          j        g t           j                            \  }t          |j        t           j                   d S )Nr   rP   )rC   r   ranger   rQ   r^   rH   r   r   s     rK   r   zTestIx_.test_regression_1  s    VE!HHQWbg&&&VBZZQWbg&&& VBHRrz22233QWbj)))))rX   c           
         d}t           t          j        fD ]Ȋt          j        fd|D              }t	          t          ||                    D ]\  \  }}t          |j                 |           t          t          fdt	          |j                  D                                  t          t          j
        |j        t          j                             d S )N)r'   r/   r,   r   c                 &    g | ]} |          S rO   rO   )r   szfuncs     rK   
<listcomp>z0TestIx_.test_shape_and_dtype.<locals>.<listcomp>  s!    7772dd2hh777rX   c              3   6   K   | ]\  }}|k    |d k    V  dS )r   NrO   )r   jshks      rK   r   z/TestIx_.test_shape_and_dtype.<locals>.<genexpr>  s/      NN2qAvvB!GvvvvNNrX   )r   rC   r   r   	enumerater   r   r   r   r   
issubdtyperQ   integer)rI   sizesarraysr   r   r   r   s        @@rK   test_shape_and_dtypezTestIx_.test_shape_and_dtype  s    BI& 	< 	<DV77777778F'FE(:(:;; < <
7ArQWQZ,,,NNNN171C1CNNNNNOOOagrz::;;;;<	< 	<rX   c                     g d}t          j        |          \  }t          t          j        |          d         |           d S )N)TFTTr   )rC   nonzeror   r   )rI   bool_aint_as      rK   	test_boolzTestIx_.test_bool  sA    ***F##RVF^^A&.....rX   c                 V    g dg dg}t          t          t          j        |           d S )Nrs   r'   r/   r-   )r   rG   rC   r   )rI   idx2ds     rK   test_1d_onlyzTestIx_.test_1d_only  s.    III&j"&%00000rX   c                     d}t          j        |          }t          ||          }t          |d         j        |df           t          |d         j        d|f           t          |j        |f           d S )Nr/   r   r   )rC   r   r   r   r   )rI   length_of_vectorrv   outs       rK   test_repeated_inputzTestIx_.test_repeated_input  sy    I&''!QiiSV\$4a#8999SV\A'7#8999QW/122222rX   N)r   r   r   r   r  r  r
  r  rO   rX   rK   r   r     s_        
* 
* 
*< < </ / /
1 1 13 3 3 3 3rX   r   c                      t           t          j        g dg          ddt          j        g dg          f         } t          | g dg           d S )Nrs   r   r  )r   r   r,   r   r   r'   r/   r-   )r   rC   rH   r   )r   s    rK   test_c_r    sU    
28YYYK  !Q)))(=(==>A---./////rX   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestFillDiagonalc           	          t          j        dt                    }t          |d           t	          |t          j        g dg dg dg                     d S )N)r,   r,   r/   r/   r   r   r   r/   r   r   r   r/   rC   r   rT   r   r   rH   r   s     rK   rL   zTestFillDiagonal.test_basic  si    HVS!!arx""$ % %	 	 	 	 	rX   c                     t          j        dt                    }t          |d           t	          |t          j        g dg dg dg dg dg dg dg dg dg dg
                     d S )NrR   r/   r  r  r  r   r   r   r  r   s     rK   test_tall_matrixz!TestFillDiagonal.test_tall_matrix  s    HWc""arx"""""""""	$ 	% 	%	 	 	 	 	rX   c                     t          j        dt                    }t          |dd           t	          |t          j        g dg dg dg dg dg dg dg dg dg dg
                     d S )NrR   r/   Tr  r  r  r  r  r   s     rK   test_tall_matrix_wrapz&TestFillDiagonal.test_tall_matrix_wrap  s    HWc""aD!!!rx"""""""""	$ 	% 	%	 	 	 	 	rX   c           	          t          j        dt                    }t          |d           t	          |t          j        g dg dg dg                     d S )N)r,   rN   r/   )
r/   r   r   r   r   r   r   r   r   r   )
r   r/   r   r   r   r   r   r   r   r   )
r   r   r/   r   r   r   r   r   r   r   r  r   s     rK   test_wide_matrixz!TestFillDiagonal.test_wide_matrix  sp    HWc""arx7777777779 : :	 	 	 	 	rX   c                     t          j        dt                    }t          |d           t          j        g d          }t          t          j        |dk              ||||f           d S )N)r,   r,   r,   r,   r'   r   r   )rC   r   rT   r   rH   r   where)rI   r   is      rK   test_operate_4d_arrayz&TestFillDiagonal.test_operate_4d_array  sb    H\3''aHYYYRXa1f%%1a|44444rX   c                     t          j        dt                    }t          t          d          5  t          |d           d d d            d S # 1 swxY w Y   d S )Nr,   at least 2-dr/   rC   r   rT   r   rG   r   r   s     rK   test_low_dim_handlingz&TestFillDiagonal.test_low_dim_handling  s    HQ ^<< 	  	 !Q	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	    AAAc                     t          j        dt                    }t          t          d          5  t          |d           d d d            d S # 1 swxY w Y   d S )N)r,   r,   r0   r,   equal lengthr   r%  r   s     rK   test_hetero_shape_handlingz+TestFillDiagonal.test_hetero_shape_handling  s     H\3'' ^<< 	  	 !Q	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 r'  N)
r   r   r   rL   r  r  r  r"  r&  r*  rO   rX   rK   r  r    s}                  5 5 5              rX   r  c            
         t          d          } t          j        g dg dg dg dg          }d|| <   t          |t          j        g dg dg d	g d
g                     t          dd          }t          j        dt
                    }d||<   t          |t          j        ddgddggddgddggg                     d S )Nr'   )r   r   r,   r'   )r/   r-   r0   rA   )rB   rN   r   r@   )r8            r   )r   r   r,   r'   )r/   r   r0   rA   )rB   rN   r   r@   )r8   r,  r-  r   r   r,   )r   r   r   r   r   )r   rC   rH   r   r   rT   )dir   d3s      rK   test_diag_indicesr1    s   	aB
,,,,,!//"""$ 	% 	%A AbE	28^^^#^^%%%&&&( ) )
 
 
 
a		B 	C  AAbE	28q!f!f!f!f    
 
 
 
 
rX   c                        e Zd Zd Zd Zd ZdS )TestDiagIndicesFromc                     t           j                            d          }t          |          \  }}t          |t          j        d                     t          |t          j        d                     d S )Nr>   r'   )rC   r   r   r   r   )rI   rv   rr   s       rK   test_diag_indices_fromz*TestDiagIndicesFrom.test_diag_indices_from  s^    IV$$ ##11bill+++1bill+++++rX   c                     t          j        d          }t          t          d          5  t	          |           d d d            d S # 1 swxY w Y   d S )Nr0   r$  )rC   r   r   rG   r   rz   s     rK   test_error_small_inputz*TestDiagIndicesFrom.test_error_small_input  s    GAJJ ^<< 	! 	!a   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   AAAc                     t          j        dt                    }t          t          d          5  t          |           d d d            d S # 1 swxY w Y   d S )N)r,   r,   r   r,   r)  )rC   r   rT   r   rG   r   rz   s     rK   test_error_shape_mismatchz-TestDiagIndicesFrom.test_error_shape_mismatch"  s    H\3'' ^<< 	! 	!a   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   AAAN)r   r   r   r6  r8  r:  rO   rX   rK   r3  r3    sA        , , ,! ! !
! ! ! ! !rX   r3  c                     t          t          ddd                    } d t          t          j        d                    D             }t          | |           t          t          d                    } t          | |           t          t          d                    } t          | t          t          d                               t          t                                } t          | dg           t          t          d                    } t          | dg           t          t          dg           } t          | g            d S )	Nr   r   r,   c                     g | ]\  }}|S rO   rO   )r   ixes      rK   r   z test_ndindex.<locals>.<listcomp>*  s    AAAur1AAArX   rs   r,   rO   r   )r   r   r
   rC   r   r   r   )rv   r   s     rK   test_ndindexr@  (  s   WQ1AAABHY,?,? @ @AAAHq(###WY  Aq(### 	WT]]Aq$wqzz**+++ 	WYYARDWR[[ARD 	Wqc]ABrX   c                      t          t          j        dd                    g k    sJ t          t          j        ddd                    g k    sJ t          t          j        d                    g k    sJ dS )zNTest ndindex produces empty iterators for explicit
    zero-length dimensions.r   r,   r   N)r   rC   r   rO   rX   rK   %test_ndindex_zero_dimensions_explicitrB  @  sw     
1a  !!R''''
1a##$$****
1"$$$$$$rX   	bad_shapeg      @2r   r,   )g       @r,   c                     t          j        t                    5  t          t	          j        |                      ddd           dS # 1 swxY w Y   dS )z1Test that non-integer dimensions raise TypeError.N)r   raisesrE   r   rC   r   )rC  s    rK   #test_ndindex_non_integer_dimensionsrG  H  s     
y	!	! $ $ 	RZ	""###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $   "A		AAc                      t          j        dd          } t          |            t          j        t
                    5  t          |            ddd           dS # 1 swxY w Y   dS )z<Test that StopIteration is raised properly after exhaustion.r   N)rC   r   r   r   rF  StopIterationnext)its    rK   $test_ndindex_stop_iteration_behaviorrM  Q  s    	Aq		BHHH	}	%	%  R                 s   AA"Ac                      d} t          j        |  }t          j        |  }t          |           t          |           t          t          |          d           t          t          |          d           dS )z>Test that each ndindex instance creates independent iterators.r   r,   r   r)   NrC   r   rK  r   )r   iter1iter2s      rK   "test_ndindex_iterator_independencerS  [  sg    EJEJEKKKKKKef%%%ef%%%%%rX   c                     t          t          t          j        d                    t          t          j        d                               t          t          t          j        dd                    t          t          j        d                               d} t          t          t          j        |            t          t          j        |                                dS )zBTest that ndindex(shape) and ndindex(*shape) produce same results.r/   )r/   r   r,   rO  r.   N)r   r   rC   r   r   s    rK   &test_ndindex_tuple_vs_args_consistencyrU  h  s     bjmm$$d2:d+;+;&<&<=== bjA&&''bj.@.@)A)ABBB Ebj%())4
50A0A+B+BCCCCCrX   c                      dD ]c} t          t          j        |                     }d t          j        t          j        |                     D             }t          ||           ddS )z2Test ndindex produces same indices as ndenumerate.)rs   r?  r   rO   c                     g | ]\  }}|S rO   rO   )r   r=  _s      rK   r   zBtest_ndindex_against_ndenumerate_compatibility.<locals>.<listcomp>y  s    OOOeb!rOOOrX   N)r   rC   r   r
   r   r   )r   ndindex_resultndenumerate_indicess      rK   .test_ndindex_against_ndenumerate_compatibilityr[  u  sp    . @ @bj//00OOr~bhuoo/N/NOOO>+>????@ @rX   c                  h    d} t          t          j        |            }g d}t          ||           dS )zBTest ndindex produces correct indices for multidimensional arrays.)r   r   r,   )r  )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   N)r   rC   r   r   )r   resultr   s      rK   )test_ndindex_multidimensional_correctnessr^  }  sD    E"*e$%%F  H """""rX   c                  d    d} t          j        |  }t          |          }t          |d           dS )zFTest ndindex behaves correctly when initialized with large dimensions.)  r`  r   NrP  )large_shapeiter_objfirst_elements      rK   &test_ndindex_large_dimensions_behaviorrd    s4    Kz;'HNNM'''''rX   c                     t          j        dd          } t          t          |           g            t          j        ddd          }t	          j        t                    5  t          |           ddd           dS # 1 swxY w Y   dS )z*Test detailed behavior of empty iterators.r   r/   r,   r   N)rC   r   r   r   r   rF  rJ  rK  )
empty_iterempty_iter2s     rK   $test_ndindex_empty_iterator_behaviorrh    s    Aq!!Jj!!2&&&*Q1%%K	}	%	%  [                 s   "A??BBnegative_shape_arg))r&   )r   r(   r'   )r/   r   r   c                     t          j        t                    5  t          |            ddd           dS # 1 swxY w Y   dS )z/Test that negative dimensions raise ValueError.N)r   rF  rG   r   )ri  s    rK    test_ndindex_negative_dimensionsrk    s     
z	"	" $ $"###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   7;;c                      dd l } t           | j                              dgk    sJ t           | j        d                    dgk    sJ d S )Nr   rO   )numpyr   r   )rC   s    rK   test_ndindex_empty_shapern    s\    

"%%%%

2B4''''''rX   c                      t          j        t                    5  t          t	          j        d                     d d d            d S # 1 swxY w Y   d S )Nr&   )r   rF  rG   r   rC   r   rO   rX   rK    test_ndindex_negative_dim_raisesrp    s    	z	"	"  RZ^^                 rH  )1r   rm  rC   numpy.lib._index_tricks_implr   r   r   r   r   r   r	   r
   r   r   r   r   numpy.testingr   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r1  r3  r@  rB  r   r   rG  rM  rS  rU  r[  r^  rd  rh  rk  rn  rp  rO   rX   rK   <module>rs     s                                                   pJ pJ pJ pJ pJ pJ pJ pJdr/ r/ r/ r/ r/ r/ r/ r/j'? '? '? '? '? '? '? '?TK K K K K K K K= = = = = = = ='3 '3 '3 '3 '3 '3 '3 '3T0 0 0
D  D  D  D  D  D  D  D N
 
 
8! ! ! ! ! ! ! !&  0% % % sC!Q&BCC$ $ DC$  
& 
& 
&
D 
D 
D@ @ @# # #( ( (      $ $ $( ( (    rX   