o
    0ZcJ                     @   s   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
 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 G dd dZG dd dZG dd	 d	ZG d
d dZG dd dZG dd dZdd ZG dd dZdd ZG dd dZ dd Z!dS )    N)assert_assert_equalassert_array_equalassert_almost_equalassert_array_almost_equalassert_raisesassert_raises_regex)mgridogridndenumeratefill_diagonaldiag_indicesdiag_indices_from	index_expndindexr_s_ix_c                   @   sf   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	e
jdg ddd Zdd ZdS )TestRavelUnravelIndexc                 C   s  t tddd t tjdddd tt tjddd W d    n1 s)w   Y  tt tjddd W d    n1 sDw   Y  tt tjddd	 W d    n1 s_w   Y  tt tjddd
 W d    n1 szw   Y  t tddd t tddd t t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ddg d t tg ddd tg dg dg}t t|dg d t tj|dddg d t tj|ddd g d! t tj|d"d#d g d$ t td%d&d' t ttg ddg dg dg t tjtg ddddg dg dg t t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)   r+      )r"   r'   clipmode)r*         r"   r"   )r2   wrap)   r1   r1   )r&   r   r"   r   )r'   r)      	   iU  )r   npunravel_indexr   	TypeErrorravel_multi_index
ValueErrorarray)selfarr rD   W/var/www/chikooza/env/lib/python3.10/site-packages/numpy/lib/tests/test_index_tricks.py
test_basic   sj   



z TestRavelUnravelIndex.test_basicc                 C   s  d}d}t t|tjg d t t|tjdd t t|tjtg d tttjg td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g tg fd tttjg tdtjg tdfdg  tttjg g gtddg  d S )	Nz9indices must be integral: the provided empty sequence waszonly int indices permitted)
   r&   r(   rD   dtyperG   r&   abc)r(   r&   )r   r>   r<   r=   rA   r   intr?   )rB   msg1msg2rD   rD   rE   test_empty_indicesF   s:   
z(TestRavelUnravelIndex.test_empty_indicesc                 C   s   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 |dddg ttt jdd d
gd
gf}t t jj	d }tt ||dfd
g ttt j||d df tt j||dfddd
g ttt j||d dfdd d S )Nr      r&   r(   u   r6   r   iK	  i  r   )r+   r)   x   $   i
  r:   r'   l   z l   nm )l    l       r-   r.   )
r<   intpint64r   r?   r   r@   r=   iinfomax)rB   rC   	dummy_arrhalf_maxrD   rD   rE   test_big_indicesZ   s.   

z&TestRavelUnravelIndex.test_big_indicesc                 C   sp  t jt jt jt jt jt jfD ]}t jg dg dg|d}d}d|d  |d  }tt 	||| t|t 
|| |d d|d   }tt j	||d	d
| t|t j
||d	d
 t jg dg dg dg|d}d}dd|d  |d   |d  }tt 	||| t|t 
|| |d d|d d|d     }tt j	||d	d
| t|t j
||d	d
 qd S )N)r   r   r   r   r&   r"   )r   r'   r   r&   r   r   rH   )r(   r:   r:   r   r   r(   r-   r.   )r   r&   r   r   r;   r(   )r(   r:   rG   rG   r   )r<   int16uint16int32uint32rU   uint64rA   r   r?   r=   )rB   rI   coordsr   uncoordsrD   rD   rE   test_dtypesr   s:     z!TestRavelUnravelIndex.test_dtypesc                 C   sd   t tjg ddddtg dd t tjg ddddtg dd tttjg dd d S )N)r(   r   r!   r   )r"   r&   r)   r9   r8   r3   )r   r   r'   r   )r8   raiser2   rc   )r   r   r   r   )r   r<   r?   r   r@   rB   rD   rD   rE   test_clipmodes   s   z$TestRavelUnravelIndex.test_clipmodesc                 C   s0   t g dd\}}t|jj t|jj d S )Nr   r   r&   )r"   r(   )r<   r=   r   flags	writeable)rB   xyrD   rD   rE   test_writeability   s   z'TestRavelUnravelIndex.test_writeabilityc                 C   sB   t dd}t|d ttdt jdgd ttdt jdgd d S )Nr   rD   z0d arrayzout of boundsr   )r<   r=   r   r   r@   rB   ri   rD   rD   rE   test_0d   s   
zTestRavelUnravelIndex.test_0dr4   )r2   r8   rc   c                 C   st   t jt jdt jdd|d}|jdksJ tt t jt jdt jdd|d W d    d S 1 s3w   Y  d S )N)r&   r   rH   r   r   r   r3   r   )r&   r   )r<   r?   zerosrT   r   r   r@   )rB   r4   resrD   rD   rE   test_empty_array_ravel   s   
"z,TestRavelUnravelIndex.test_empty_array_ravelc                 C   sz   t t jdt jdd}t|dksJ tdd |D sJ tt t dgd W d    d S 1 s6w   Y  d S )Nr   rH   rn   r&   c                 s   s    | ]}|j d kV  qdS )ro   N)r   ).0arD   rD   rE   	<genexpr>   s    zATestRavelUnravelIndex.test_empty_array_unravel.<locals>.<genexpr>r   )r<   r=   rp   rT   lenallr   r@   )rB   rq   rD   rD   rE   test_empty_array_unravel   s   
"z.TestRavelUnravelIndex.test_empty_array_unravelN)__name__
__module____qualname__rF   rO   rZ   rb   re   rk   rm   pytestmarkparametrizerr   rx   rD   rD   rD   rE   r      s    7	
	r   c                   @   sV   e Zd Zdd Zdd Zdd Zdd Zej	d	d
dgdd Z
dd Zdd ZdS )TestGridc                 C   s   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  dd t|d |d d	 d t|d |d  d
d d S )Nr!   r                 $@r$   )rG   )   r      ggfffff?gqq?)r	   r   r   r   )rB   rt   brD   rD   rE   rF      s   zTestGrid.test_basicc                 C   s8   t jdddd\}}t|d t|tddd d d S )Nr   rG   T)retstepg9/?y              I@r1   )r<   linspacer   r   r	   )rB   rj   strD   rD   rE   test_linspace_equivalence   s   
z"TestGrid.test_linspace_equivalencec                 C   sV  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dd  t|d d d d
f dtdd  t|d
 dd d f tddd t|d d d df dtdd d t|d
dd d f |d
d
d d f  dtdd d t|dd d df |dd d d
f  dtdd d d S )Nr!   r   r   r   r$   g?)r   rG   rG   )r   r   r   r   rG   dr   r   )r	   r   r   r   r<   onesr   )rB   cr   rD   rD   rE   test_nd   s   $&$($$zTestGrid.test_ndc                 C   s\   t ddddddf }tddddddf }tj| }t||D ]	\}}t|| q"d S )Nr!   r   r   r   r   )r	   r
   r<   broadcast_arrayszipr   )rB   	grid_fullgrid_sparsegrid_broadcastfr   rD   rD   rE   test_sparse   s   
zTestGrid.test_sparsezstart, stop, step, expected)NrG   r   )   rG   )ir   N)i     c                 C   sJ   t ||||||f }t ||| }t|j|d  t|j|d  d S )Nr   r   )r	   r   size)rB   startstopstepexpectedgrid
grid_smallrD   rD   rE   test_mgrid_size_none_handling   s   	z&TestGrid.test_mgrid_size_none_handlingc                 C   s   t dddf }t tdtdtdf }t|jtjk t|| t ddd }t tdtdtd }t|jtjk t|| d S )Nr$   gQ?)r	   r<   float32r   rI   float64r   )rB   grid64grid32rD   rD   rE   test_accepts_npfloating   s   "
 z TestGrid.test_accepts_npfloatingc                 C   sP   t tdddf tddtdf  t tddd tddtd  d S )Nr$   g333333?y              @)r   r	   r<   	complex64rd   rD   rD   rE   test_accepts_npcomplexfloating  s   "z'TestGrid.test_accepts_npcomplexfloatingN)ry   rz   r{   rF   r   r   r   r|   r}   r~   r   r   r   rD   rD   rD   rE   r      s    	
r   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestConcatenatorc                 C   sD   t td tg d t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   r<   rA   r   )rB   r   r   rD   rD   rE   test_1d  s   
zTestConcatenator.test_1dc                 C   s"   t dddf }t|jdk d S )Ng333333$@r   rG   f8)r   r   rI   rB   grD   rD   rE   test_mixed_type     z TestConcatenator.test_mixed_typec                 C   s4   t dtdgtg ddf }t|jdk d S )Ng333333$r   )r   r&   r"   g      $@r   )r   r<   rA   r   rI   r   rD   rD   rE   test_more_mixed_type  s   "z%TestConcatenator.test_more_mixed_typec                 C   sB   t ddd }t|jdk t ddtd }t|jdk d S )Nr   rS   y              Y@)d   )r   r   r   r<   r   r   rD   rD   rE   test_complex_step  s   z"TestConcatenator.test_complex_stepc                 C   s   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(   rG   )rG   r(   )r<   randomrandr   r   r   r   )rB   r   r   r   rD   rD   rE   test_2d$  s   zTestConcatenator.test_2dc                 C   sb   t tdtddf g d t tg dtdf g d t ttdg df g d d S )Nr   r   r   r   r   r   r&   )r   r   r   r&   rf   )r   r   r<   rA   rd   rD   rD   rE   rm   0  s    $zTestConcatenator.test_0dN)	ry   rz   r{   r   r   r   r   r   rm   rD   rD   rD   rE   r     s    	r   c                   @   s   e Zd Zdd ZdS )TestNdenumeratec                 C   s0   t 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"   )r<   rA   r   listr   rB   rt   rD   rD   rE   rF   7  s   zTestNdenumerate.test_basicN)ry   rz   r{   rF   rD   rD   rD   rE   r   6  s    r   c                   @   s   e Zd Zdd Zdd ZdS )TestIndexExpressionc                 C   sJ   t d}t|d d |td d   t|d d |td d   d S )Nr   r!   )r<   aranger   r   r   r   rD   rD   rE   test_regression_1>  s   
"z%TestIndexExpression.test_regression_1c                 C   s   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   )r<   r   r   r   r   r   r   rD   rD   rE   test_simple_1D  s   :>z!TestIndexExpression.test_simple_1N)ry   rz   r{   r   r   rD   rD   rD   rE   r   =  s    r   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestIx_c                 C   sb   t td\}t|jt j t g \}t|jt j t t jg t jd\}t|jt j d S )Nr   rH   )r<   r   ranger   rI   rT   rA   r   r   rD   rD   rE   r   L  s   zTestIx_.test_regression_1c                    s   d}t tjfD ]> tj fdd|D  }tt||D ](\\}}t|j | tt	fddt|jD  tt
|jtj qqd S )N)r"   r(   r&   r   c                    s   g | ]} |qS rD   rD   )rs   sz)funcrD   rE   
<listcomp>\      z0TestIx_.test_shape_and_dtype.<locals>.<listcomp>c                 3   s$    | ]\}}| kr|d kV  qdS )r   NrD   )rs   jsh)krD   rE   ru   _  s   " z/TestIx_.test_shape_and_dtype.<locals>.<genexpr>)r   r<   r   r   	enumerater   r   r   r   rw   
issubdtyperI   integer)rB   sizesarraysrt   r   rD   )r   r   rE   test_shape_and_dtypeX  s    zTestIx_.test_shape_and_dtypec                 C   s,   g d}t |\}tt |d | d S )N)TFTTr   )r<   nonzeror   r   )rB   bool_aint_arD   rD   rE   	test_boolb  s   zTestIx_.test_boolc                 C   s"   g dg dg}t ttj| d S )Nrf   r"   r(   r'   )r   r@   r<   r   )rB   idx2drD   rD   rE   test_1d_onlyg  r   zTestIx_.test_1d_onlyc                 C   sR   d}t |}t||}t|d j|df t|d jd|f t|j|f d S )Nr(   r   r   )r<   r   r   r   r   )rB   length_of_vectorri   outrD   rD   rE   test_repeated_inputk  s   

zTestIx_.test_repeated_inputN)ry   rz   r{   r   r   r   r   r   rD   rD   rD   rE   r   K  s    
r   c                  C   s>   t jt g dgddt g dgf } t| g dg d S )Nrf   r   r   )r   r   r&   r   r   r"   r(   r'   )r<   c_rA   r   )rt   rD   rD   rE   test_c_u  s   *r   c                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )TestFillDiagonalc                 C   <   t dt}t|d t|t g dg dg dg d S )N)r&   r&   r(   r(   r   r   r   r(   r   r   r   r(   r<   rp   rL   r   r   rA   r   rD   rD   rE   rF   {     
zTestFillDiagonal.test_basicc                 C   sf   t dt}t|d t|t g dg dg dg dg dg dg dg dg dg dg
 d S )NrJ   r(   r   r   r   r   r   r   r   r   rD   rD   rE   test_tall_matrix  s   
z!TestFillDiagonal.test_tall_matrixc                 C   sh   t dt}t|dd t|t g dg dg dg dg dg dg dg dg dg dg
 d S )NrJ   r(   Tr   r   r   r   r   r   rD   rD   rE   test_tall_matrix_wrap  s   z&TestFillDiagonal.test_tall_matrix_wrapc                 C   r   )N)r&   rG   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   rD   rD   rE   test_wide_matrix  r   z!TestFillDiagonal.test_wide_matrixc                 C   sD   t dt}t|d t g d}tt |dk||||f d S )N)r&   r&   r&   r&   r"   r   r   )r<   rp   rL   r   rA   r   where)rB   rt   irD   rD   rE   test_operate_4d_array  s   
 z&TestFillDiagonal.test_operate_4d_arrayc                 C   F   t dt}ttd t|d W d    d S 1 sw   Y  d S )Nr&   at least 2-dr(   r<   rp   rL   r   r@   r   r   rD   rD   rE   test_low_dim_handling  s   "z&TestFillDiagonal.test_low_dim_handlingc                 C   r   )N)r&   r&   r)   r&   equal lengthr   r   r   rD   rD   rE   test_hetero_shape_handling  s   "z+TestFillDiagonal.test_hetero_shape_handlingN)
ry   rz   r{   rF   r   r   r   r   r   r   rD   rD   rD   rE   r   z  s    		r   c               	   C   s   t d} tg dg dg dg dg}d|| < t|tg dg dg d	g d
g t dd}tdt}d||< t|tddgddggddgddggg d S )Nr"   )r   r   r&   r"   )r(   r'   r)   r:   )r;   rG   r   r9   )r1            r   )r   r   r&   r"   )r(   r   r)   r:   )r;   rG   r   r9   )r1   r   r   r   r   r&   )r   r   r   r   r   )r   r<   rA   r   rp   rL   )dirt   d3rD   rD   rE   test_diag_indices  s4   

r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestDiagIndicesFromc                 C   s<   t jd}t|\}}t|t d t|t d d S )Nr7   r"   )r<   r   r   r   r   )rB   ri   rr   rD   rD   rE   test_diag_indices_from  s   z*TestDiagIndicesFrom.test_diag_indices_fromc                 C   sB   t d}ttd t| W d    d S 1 sw   Y  d S )Nr)   r   )r<   r   r   r@   r   rl   rD   rD   rE   test_error_small_input  s   

"z*TestDiagIndicesFrom.test_error_small_inputc                 C   sD   t dt}ttd t| W d    d S 1 sw   Y  d S )N)r&   r&   r   r&   r   )r<   rp   rL   r   r@   r   rl   rD   rD   rE   test_error_shape_mismatch  s   
"z-TestDiagIndicesFrom.test_error_shape_mismatchN)ry   rz   r{   r   r   r   rD   rD   rD   rE   r     s    r   c                  C   s   t tddd} dd tt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                 S   s   g | ]\}}|qS rD   rD   )rs   ixerD   rD   rE   r     r   z test_ndindex.<locals>.<listcomp>rf   )r&   rD   r   )r   r   r   r<   rp   r   r   )ri   r   rD   rD   rE   test_ndindex  s   


r   )"r|   numpyr<   numpy.testingr   r   r   r   r   r   r   numpy.lib.index_tricksr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rD   rD   rD   rE   <module>   s     $4 .Q**G