
    giW_                        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 jH                  jK                  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 jH                  jK                  d&g d'      d(        Z.d) Z/d* Z0y)+    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                  j                  dg d	      d
        Zd Zd Zy)TestRavelUnravelIndexc                 t   t        t        j                  dd      d       t        t        j                  dd      d       t        t              5  t        j                  dd       d d d        t        t              5  t        j                  dd       d d d        t        t              5  t        j                  dd	       d d d        t        t              5  t        j                  dd
       d d d        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%       y # 1 sw Y   xY w# 1 sw Y   }xY w# 1 sw Y   [xY w# 1 sw Y   9xY w)(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     Y/var/www/html/audio_env/lib/python3.12/site-packages/numpy/lib/tests/test_index_tricks.py
test_basicz TestRavelUnravelIndex.test_basic   s   R%%a0&9 	R%%a,24&,	. 9% 	5QV4	5 9% 	-QV,	- 9% 	0Sh/	0 9% 	1Sx0	1 	R))&&91=R%%c84g>R))'8<cBj""2"2B?i!1!13?j""2"2Av>j""6"6Hj""6"6Gj""6"6Hj""6"6Gi!5!5y&IR%%&99EyQ  I68K	M hh	9-.R))#v6E  fC8,	H  f6:L	JR))#v<LM!	#R)),EtLR%%bhh|&<fE+	-RXXl3V3G	"	$ 	R%%dL9<HW	5 	5	- 	-	0 	0	1 	1s0   P P/P P-PP P*-P7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        y )	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   sT   J+ItR-=-=r:NItR-=-=r:NItR-=-=rxx|&	(R%%bhhr&=zJ"b\	#ItR-A-AB8#	%ItR-A-AB=#	%ItR-A-AXXb\288B<0&	:R))"C("((2S*ABFLMO	QR))"((B83*G 	"    c                    t         j                  t         j                  k(  r9d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       y )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   s1   77bhhr7QFQHr1g$<!Q!Q1C$$S*FG\*,
 	j""2"2A7MN S1#J	88BGG$((A-  XqM:QC	Aj  )hlA->	@  XqMEs	Lj  )hlA->c	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	
              y )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   s   hh		288ii2996 	OEXX#%78GFE6!9}vay0H--fe<hG!1!1(E!BCay1vay=0H$$VU#>J!1!1(E!MNXX#%79KLF EQ]VAY67&)CH--fe<hG!1!1(E!BCay1q	Aq	M(A#BBH$$VU#>J!1!1(E!MN/	OrX   c                 0   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       y )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  }=	? 	R))-0PQ )),F	H 	,,m]	LrX   c                     t        j                  g dd      \  }}t        |j                  j                         t        |j                  j                         y )Nr   r   r,   )r'   r/   )rC   rD   r   flags	writeable)rI   xys      rK   test_writeabilityz'TestRavelUnravelIndex.test_writeability   s<    	6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       y )Nr   rO   z0d arrayzout of boundsr   )rC   rD   r   r   rG   rI   rv   s     rK   test_0dzTestRavelUnravelIndex.test_0d   sR    Q#QJ
B4D4Dqc2N)9)9A3	DrX   r;   )r9   r?   ro   c                 Z   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        y # 1 sw Y   y xY w)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    ""HHV2773YTKyyD   :& 	K  HHV2773YTK	K 	K 	Ks   <B!!B*c                 4   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        y # 1 sw Y   y xY w)Nr   rP   r}   r,   c              3   :   K   | ]  }|j                   d k(    yw)r~   Nr   ).0as     rK   	<genexpr>zATestRavelUnravelIndex.test_empty_array_unravel.<locals>.<genexpr>   s     0q177d?0s   r   )rC   rD   r   r^   lenallr   rG   )rI   r   s     rK   test_empty_array_unravelz.TestRavelUnravelIndex.test_empty_array_unravel   sv    rxx99E3x1}}0C0000:& 	-aS),	- 	- 	-s   -BBc                 |    t        j                  t        j                  g dgt         j                        d       y )N)r   r   r   r   rP   )r'   )rC   rD   rH   ri   rp   s    rK   test_regression_size_1_indexz2TestRavelUnravelIndex.test_regression_size_1_index   s%     	<.		BD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n"(K0O6
L#D [[V%>?K @K-JrX   r   c                   ~    e Zd Zd Zd Zd Zd Zej                  j                  dddg      d        Z
d	 Zd
 Zd Zy)TestGridc                 z   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       y )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AbE1Q4(?B7AaD1Q4KB7rX   c                     t        j                  ddd      \  }}t        |d       t        |t        ddd   d       y )Nr   rN   T)retstepg9/?y              I@r8   )rC   linspacer   r   r	   )rI   rw   sts      rK   test_linspace_equivalencez"TestGrid.test_linspace_equivalence   s8    Ar402B)!!U1R8_b9rX   c                    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       y )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1:C(8'891Q41:rBGGB,<'<=!!A$r1u+rwwr3/?D!!A$q"u+q2772s3C/CRH!!Aq!G*qAqz"9"%C(8"8"	>!!Aq!G*qAqz"9"%C(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        ||        y )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   sn    "Qs(BqH,-	BqHb3h./ ,,k:	>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          y )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   sU     U4_eDo56 5d?+
TYY,Z__hqk2rX   c                 D   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        ||       y )Nr*   Q?)r	   rC   float32r   rQ   float64r   )rI   grid64grid32s      rK   test_accepts_npfloatingz TestGrid.test_accepts_npfloating  s    s4|}&rzz#rzz$'7

3GHJ!&&1||rzz)))||rzz))) s4|$rzz#rzz$'7

3GH

*+!&&1rX   c                 &   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(  xr 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        ||       y )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  s0   s4|}&MM#r}}T22==3EEF
 	./!&'21R]]1-d23
1R]]1-d235

  J$4$4EEF:z!}5 s4|$MM#r}}T22==3EE
 	./!&'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(  xr 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(  xr t        j                  k(  nc        t        ||       y )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-  s   !#c"*+s3r||B/?'?'@!B	

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

 S&S(+(..>BJJ>?8X.#c".."667	#c".."6679!<		9??CbmmCD8X.rX   N)r   r   r   rL   r   r   r   r   r   r   r   r   r   r   rO   rX   rK   r   r      sV    
8:
> [[:"#=
 
3	
323,/rX   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestConcatenatorc                     t        t        d   t        j                  g d             t        j                  d      }t        |dd|f   }t        |g d       y )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  sE    2./:L1MNGGAJq!QzN1BCrX   c                 N    t         dddf   }t        |j                  dk(         y )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(         y )Ng333333$r   )r   r,   r'   g      $@r   )r   rC   rH   r   rQ   r   s     rK   test_more_mixed_typez%TestConcatenator.test_more_mixed_typeO  s8    ubhhsmRXXi%8$>?4 rX   c                     t         ddd   }t        |j                  dk(         t         ddt        j                  d         }t        |j                  dk(         y )Nr   r]   y              Y@)d   )r   r   r   rC   r   r   s     rK   test_complex_stepz"TestConcatenator.test_complex_stepS  sO    qDyM6!" qBLL&&'6!"rX   c                    t         j                  j                  dd      }t         j                  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   |       y )Nr/   1)r/   rN   )rN   r/   )rC   randomrandr   r   r   r   )rI   r   r   r   s       rK   test_2dzTestConcatenator.test_2d\  s    IINN1a IINN1a sAqyM7"#1QU8Q'1QU8Q'q!tH7"#1RaRU8Q'1QRU8Q'rX   c                 
   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       y )Nr   r   r   r   r   r   r,   )r   r   r   r,   rs   )r   r   rC   rH   rp   s    rK   r{   zTestConcatenator.test_0dh  sX    R288A;)*I6R	288A;./>RY./>rX   N)	r   r   r   r   r   r   r   r   r{   rO   rX   rK   r   r   D  s!    D!!#
(?rX   r   c                       e Zd Zd Zy)TestNdenumeratec                 z    t        j                  ddgddgg      }t        t        t	        |            g d       y )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  s4    HHq!fq!f%&T+a.)I	KrX   N)r   r   r   rL   rO   rX   rK   r   r   n  s    KrX   r   c                       e Zd Zd Zd Zy)TestIndexExpressionc                     t        j                  d      }t        |d d |t        d d           t        |d d |t        d d           y )Nr   r&   )rC   aranger   r   r   r   s     rK   test_regression_1z%TestIndexExpression.test_regression_1v  sD    IIaLQsVQr#2wZ(QsVQy"~./rX   c           	          t         j                  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             y )Nr'   r/   r-   r,   r   r   )rC   r   r   r   r   r   r   s     rK   test_simple_1z!TestIndexExpression.test_simple_1|  s    IINN1a#Qq"1"q!f}%q1bqb1a&=)A'BCQq"1"q!f}%qArrAq6M):';<rX   N)r   r   r   r   r   rO   rX   rK   r   r   u  s    0=rX   r   c                   *    e Zd Zd Zd Zd Zd Zd Zy)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                         y )Nr   rP   )rC   r   ranger   rQ   r^   rH   r   r   s     rK   r   zTestIx_.test_regression_1  s|    VVE!HQWWbgg&VVBZQWWbgg& VVBHHRrzz23QWWbjj)rX   c           
         d}t         t        j                  fD ]  }t        j                  |D cg c]
  } ||       c} }t	        t        ||            D ]  \  \  }}t        |j                     |       t        t        fdt	        |j                        D                     t        t        j                  |j                  t        j                                 y c c}w )N)r'   r/   r,   r   c              3   :   K   | ]  \  }}|k7  s|d k(    yw)r   NrO   )r   jshks      rK   r   z/TestIx_.test_shape_and_dtype.<locals>.<genexpr>  s     N2qAvB!GNs   
)r   rC   r   r   	enumerater   r   r   r   r   
issubdtyperQ   integer)rI   sizesfuncszarraysr   r   s         @rK   test_shape_and_dtypezTestIx_.test_shape_and_dtype  s    BII& 	<DVV72d2h78F'FE(:; <
7ArQWWQZ,N1771CNNOaggrzz:;<	<7s   C&
c                 ~    g d}t        j                  |      \  }t        t        j                  |      d   |       y )N)TFTTr   )rC   nonzeror   r   )rI   bool_aint_as      rK   	test_boolzTestIx_.test_bool  s.    *F#RVVF^A&.rX   c                 R    g dg dg}t        t        t        j                  |       y )Nrs   r'   r/   r-   )r   rG   rC   r   )rI   idx2ds     rK   test_1d_onlyzTestIx_.test_1d_only  s    I&j"&&%0rX   c                     d}t        j                  |      }t        ||      }t        |d   j                  |df       t        |d   j                  d|f       t        |j                  |f       y )Nr/   r   r   )rC   r   r   r   r   )rI   length_of_vectorrv   outs       rK   test_repeated_inputzTestIx_.test_repeated_input  sd    II&'!QiSV\\$4a#89SV\\A'7#89QWW/12rX   N)r   r   r   r   r   r  r  r  rO   rX   rK   r   r     s    
*</
13rX   r   c                      t         t        j                  g dg      ddt        j                  g dg      f   } t        | g dg       y )Nrs   r   r  )r   r   r,   r   r   r'   r/   r-   )r   rC   rH   r   )r   s    rK   test_c_r    s9    
288YK !Q)(==>A-./rX   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestFillDiagonalc           	          t        j                  dt              }t        |d       t	        |t        j
                  g dg dg dg             y )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  s?    HHVS!arxx""$ %	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
             y )NrR   r/   r  r  r  r   r   r   r  r   s     rK   test_tall_matrixz!TestFillDiagonal.test_tall_matrix  sT    HHWc"arxx"""""""""	$ 	%	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
             y )NrR   r/   Tr  r  r  r  r  r   s     rK   test_tall_matrix_wrapz&TestFillDiagonal.test_tall_matrix_wrap  sV    HHWc"aD!rxx"""""""""	$ 	%	rX   c           	          t        j                  dt              }t        |d       t	        |t        j
                  g dg dg dg             y )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  s@    HHWc"arxx7779 :	rX   c                     t        j                  dt              }t        |d       t        j                  g d      }t        t        j                  |dk7        ||||f       y )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  sI    HH\3'aHHYRXXa1f%1a|4rX   c                     t        j                  dt              }t        t        d      5  t        |d       d d d        y # 1 sw Y   y xY w)Nr,   at least 2-dr/   rC   r   rT   r   rG   r   r   s     rK   test_low_dim_handlingz&TestFillDiagonal.test_low_dim_handling  s;    HHQ ^< 	 !Q	  	  	    AA
c                     t        j                  dt              }t        t        d      5  t        |d       d d d        y # 1 sw Y   y xY w)N)r,   r,   r0   r,   equal lengthr   r#  r   s     rK   test_hetero_shape_handlingz+TestFillDiagonal.test_hetero_shape_handling  s=     HH\3' ^< 	 !Q	  	  	 r%  N)
r   r   r   rL   r  r  r  r   r$  r(  rO   rX   rK   r  r    s%      5  rX   r  c            
      l   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             y )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_indicesr/    s    	aB
,!"$ 	%A AbE	288^#%&( )
 
a	B 	C AAbE	288q!f!f!f!f  
rX   c                       e Zd Zd Zd Zd Zy)TestDiagIndicesFromc                     t         j                  j                  d      }t        |      \  }}t        |t        j                  d             t        |t        j                  d             y )Nr>   r'   )rC   r   r   r   r   )rI   rv   rr   s       rK   test_diag_indices_fromz*TestDiagIndicesFrom.test_diag_indices_from  sH    IIV$ #11biil+1biil+rX   c                     t        j                  d      }t        t        d      5  t	        |       d d d        y # 1 sw Y   y xY w)Nr0   r"  )rC   r   r   rG   r   rz   s     rK   test_error_small_inputz*TestDiagIndicesFrom.test_error_small_input  s6    GGAJ ^< 	!a 	! 	! 	!s	   ;Ac                     t        j                  dt              }t        t        d      5  t        |       d d d        y # 1 sw Y   y xY w)N)r,   r,   r   r,   r'  )rC   r   rT   r   rG   r   rz   s     rK   test_error_shape_mismatchz-TestDiagIndicesFrom.test_error_shape_mismatch"  s9    HH\3' ^< 	!a 	! 	! 	!s   A  A	N)r   r   r   r4  r6  r8  rO   rX   rK   r1  r1    s    ,!
!rX   r1  c                     t        t        ddd            } t        t        j                  d            D cg c]  \  }}|	 }}}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        y c c}}w )Nr   r   r,   rs   r,   rO   r   )r   r   r
   rC   r   r   r   )rv   ixer   s       rK   test_ndindexr=  (  s    WQ1A +BHHY,? @Aur1AHAq(#WY Aq(# 	WT]Aq$wqz*+ 	WYARDWR[ARD 	Wqc]AB' Bs   D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 y)zNTest ndindex produces empty iterators for explicit
    zero-length dimensions.r   r,   r   N)r   rC   r   rO   rX   rK   %test_ndindex_zero_dimensions_explicitr?  @  s]     

1a !R'''

1a#$***

1"$$$rX   	bad_shapeg      @2r   r,   )g       @r,   c                     t        j                  t              5  t        t	        j
                  |              ddd       y# 1 sw Y   yxY w)z1Test that non-integer dimensions raise TypeError.N)r   raisesrE   r   rC   r   )r@  s    rK   #test_ndindex_non_integer_dimensionsrD  H  s8     
y	! $ 	RZZ	"#$ $ $   AAc                      t        j                  dd      } t        |        t        j                  t
              5  t        |        ddd       y# 1 sw Y   yxY w)z<Test that StopIteration is raised properly after exhaustion.r   N)rC   r   r   r   rC  StopIterationnext)its    rK   $test_ndindex_stop_iteration_behaviorrJ  Q  sA    	Aq	BH	}	% R  s   AAc                      d} t        j                  |  }t        j                  |  }t        |       t        |       t        t        |      d       t        t        |      d       y)z>Test that each ndindex instance creates independent iterators.r   r,   r   r)   NrC   r   rH  r   )r   iter1iter2s      rK   "test_ndindex_iterator_independencerP  [  sM    EJJEJJEKK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                  |                    y)zBTest that ndindex(shape) and ndindex(*shape) produce same results.r/   )r/   r   r,   rL  r.   N)r   r   rC   r   r   s    rK   &test_ndindex_tuple_vs_args_consistencyrR  h  s     bjjm$d2::d+;&<= bjjA&'bjj.@)AB Ebjj%()4

50A+BCrX   c                      dD ]f  } t        t        j                  |             }t        j                  t        j                  |             D cg c]  \  }}|	 }}}t        ||       h yc c}}w )z2Test ndindex produces same indices as ndenumerate.)rs   r:  r   rO   N)r   rC   r   r
   r   r   )r   ndindex_resultr;  _ndenumerate_indicess        rK   .test_ndindex_against_ndenumerate_compatibilityrW  u  s]    . @bjj/0/1~~bhhuo/NOeb!rOO>+>?@Os   A-c                  ^    d} t        t        j                  |        }g d}t        ||       y)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_correctnessrZ  }  s-    E"**e$%FH "rX   c                  Z    d} t        j                  |  }t        |      }t        |d       y)zFTest ndindex behaves correctly when initialized with large dimensions.)  r\  r   NrM  )large_shapeiter_objfirst_elements      rK   &test_ndindex_large_dimensions_behaviorr`    s(    Kzz;'HNM'rX   c                      t        j                  dd      } t        t        |       g        t        j                  ddd      }t	        j
                  t              5  t        |       ddd       y# 1 sw Y   yxY w)z*Test detailed behavior of empty iterators.r   r/   r,   r   N)rC   r   r   r   r   rC  rG  rH  )
empty_iterempty_iter2s     rK   $test_ndindex_empty_iterator_behaviorrd    s\    Aq!Jj!2&**Q1%K	}	% [  s   A11A:negative_shape_arg))r&   )r   r(   r'   )r/   r   r   c                 v    t        j                  t              5  t        |        ddd       y# 1 sw Y   yxY w)z/Test that negative dimensions raise ValueError.N)r   rC  rG   r   )re  s    rK    test_ndindex_negative_dimensionsrg    s.     
z	" $"#$ $ $s   /8c                      dd l } t         | j                               dgk(  sJ t         | j                  d            dgk(  sJ y )Nr   rO   )numpyr   r   )rC   s    rK   test_ndindex_empty_shaperj    sA    


"%%%


2B4'''rX   c                      t        j                  t              5  t        t	        j
                  d             d d d        y # 1 sw Y   y xY w)Nr&   )r   rC  rG   r   rC   r   rO   rX   rK    test_ndindex_negative_dim_raisesrl    s3    	z	" RZZ^  rE  )1r   ri  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  r/  r1  r=  r?  r   r   rD  rJ  rP  rR  rW  rZ  r`  rd  rg  rj  rl  rO   rX   rK   <module>ro     s.         pJ pJdr/ r/j'? '?TK K= ='3 '3T0
D  D N
8! !&0% sC!Q&BC$ D$
&
D@#( $$(rX   