U
    ¸mœd O  ã                   @   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                   @   sh   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dddg¡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 5 Q R X ttƒ� tjddd� W 5 Q R X ttƒ� tjddd	� W 5 Q R X ttƒ� tjddd
� W 5 Q R X 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¡dddgƒ t t dddgd¡dƒ t dddgdddgg¡}t t |d¡dddgƒ t tj|ddd�d dd!gƒ t tj|d"d#d$�dd%d&gƒ t tj|d'd(d$�d)d!d!gƒ t t d*d+¡d,ƒ t t t dddg¡d¡dddgdddggƒ t tjt d dd!g¡ddd�dddgdddggƒ t t d,d+¡ddddgƒ d S )-Né   )r   r   ©é   r   )ÚindicesÚshape)r   Úhape)r   éþ   )é   é^   )Zims)Zdims)r   éB   éÿÿÿÿg      à?é   )éýÿÿÿr   )r   r   )r   r!   )r   r   )çš™™™™™¹?g        é.   )r    é   é   r   r$   r%   é   )é   r%   é   é)   é%   ÚF©Úorderé   é   )r    r%   Úclip©Úmodeé   é   ©r    r    )r0   Úwrapé   )r$   r   r    r   )r%   r'   é   é	   iU  )r   ÚnpÚunravel_indexr   Ú	TypeErrorÚravel_multi_indexÚ
ValueErrorÚarray)ÚselfÚarr© rB   úZ/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/numpy/lib/tests/test_index_tricks.pyÚ
test_basic   sh    ÿþ



 ÿ ÿ ÿÿÿþ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&   rB   ©Údtype©rE   r$   Úabc)r&   r$   )r   r<   r:   r;   r?   r   Úintr=   )r@   Zmsg1Zmsg2rB   rB   rC   Útest_empty_indicesF   s>    ÿÿÿÿ
 ÿ ÿÿÿÿz(TestRavelUnravelIndex.test_empty_indicesc                 C   sê   t jt jkrPd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   r4   r   iK	  i  r   )r)   r'   éx   é$   i’
  r8   r%   l   ¼zá l   nm )l   ÿÿ l       r+   r,   )
r:   ÚintpÚint64r   r=   r   r>   r;   ZiinfoÚmax)r@   rA   Z	dummy_arrZhalf_maxrB   rB   rC   Útest_big_indicesZ   s@      ÿ
þ ÿ  
ÿ ÿ  
 ÿz&TestRavelUnravelIndex.test_big_indicesc              
   C   sš  t jt jt jt jt jt jfD �]v}t jddddddgddddddg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ddddddgddddddgdddddd
g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 )Nr   r   r   r$   r    r%   rF   )r&   r8   r8   r&   r+   r,   r9   )r&   r8   rE   rE   )r:   Zint16Zuint16Zint32Zuint32rQ   Zuint64r?   r   r=   r;   )r@   rG   Zcoordsr   ZuncoordsrB   rB   rC   Útest_dtypesr   sB      ÿ
 ÿ ÿ,þ   ÿz!TestRavelUnravelIndex.test_dtypesc                 C   sx   t tjddddgddd�t ddddgd¡ƒ t tjddddgdd	d�t ddd
dgd¡ƒ tttjddddgdƒ d S )Nr&   r   r   r   )r    r$   r'   r7   r6   r1   r%   )r6   Úraiser0   rU   r   )r   r:   r=   r   r>   ©r@   rB   rB   rC   Útest_clipmodes�   s    þÿý  
 ÿz$TestRavelUnravelIndex.test_clipmodesc                 C   s2   t  dddgd¡\}}t|jjƒ t|jjƒ d S )Nr   r   r$   )r    r&   )r:   r;   r   ÚflagsZ	writeable)r@   ÚxÚyrB   rB   rC   Ú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   rB   z0d arrayzout of boundsr   )r:   r;   r   r   r>   ©r@   rY   rB   rB   rC   Útest_0dŸ   s    
    ÿzTestRavelUnravelIndex.test_0dr2   r0   r6   rU   c              	   C   s^   t jt jdt jd�d|d�}|jdks*t‚ttƒ�" t jt jdt jd�d|d� W 5 Q R X d S )N)r$   r   rF   ©r   r   r   r1   ©r   )r$   r   )r:   r=   ÚzerosrP   r   ÚAssertionErrorr   r>   )r@   r2   ÚresrB   rB   rC   Útest_empty_array_ravel¨   s      ÿ
  ÿz,TestRavelUnravelIndex.test_empty_array_ravelc              	   C   sd   t  t jdt jd�d¡}t|ƒdks(t‚tdd„ |D ƒƒs>t‚ttƒ� t  dgd¡ W 5 Q R X d S )Nr   rF   r^   r$   c                 s   s   | ]}|j d kV  qdS )r_   N)r   )Ú.0ÚarB   rB   rC   Ú	<genexpr>¶   s     zATestRavelUnravelIndex.test_empty_array_unravel.<locals>.<genexpr>r   )	r:   r;   r`   rP   Úlenra   Úallr   r>   )r@   rb   rB   rB   rC   Útest_empty_array_unravel²   s
    
z.TestRavelUnravelIndex.test_empty_array_unravelN)Ú__name__Ú
__module__Ú__qualname__rD   rK   rS   rT   rW   r[   r]   ÚpytestÚmarkÚparametrizerc   ri   rB   rB   rB   rC   r      s   7	
	r   c                   @   s^   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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"   )rE   )é   r   é   ggfffffþ?gÇqÇqÌ?)r	   r   r   r   )r@   re   ÚbrB   rB   rC   rD   ¼   s    zTestGrid.test_basicc                 C   s8   t jdddd�\}}t|dƒ t|tddd… dƒ d S )Nr   rE   T)Zretstepg9/§àåÄ?y              I@r/   )r:   Zlinspacer   r   r	   )r@   rZ   ÚstrB   rB   rC   Ú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   rq   éþÿÿÿr   r"   gš™™™™™É?)r   rE   rE   )r   rr   rr   r   rE   Údrs   rr   )r	   r   r   r   r:   Úonesr   )r@   Úcrx   rB   rB   rC   Ú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||ƒ qDd S )Nr   r   rq   rw   r   )r	   r
   r:   Zbroadcast_arraysÚzipr   )r@   Z	grid_fullZgrid_sparseZgrid_broadcastÚfrt   rB   rB   rC   Útest_sparseÛ   s
    
zTestGrid.test_sparsezstart, stop, step, expected)NrE   rq   )éÈ   rE   )iöÿÿÿrr   N)i  é   c                 C   sJ   t |||…|||…f }t |||… }t|j|d ƒ t|j|d ƒ d S )Nr   r   )r	   r   Úsize)r@   ÚstartÚstopÚstepÚexpectedÚgridZ
grid_smallrB   rB   rC   Ú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"   ç…ëQ¸Õ?)r	   r:   Úfloat32r   rG   Úfloat64r   )r@   Úgrid64Zgrid32rB   rB   rC   Útest_accepts_npfloatingô   s    "
 z TestGrid.test_accepts_npfloatingc                 C   sò   t ddd…f }t t d¡t d¡t d¡…f }t|jtjkƒ t||ƒ t dt d¡d… }t dt d¡d…f }t|j|j  ko�tjkn  ƒ t||d ƒ t ddd… }t t d¡t d¡t d¡… }t|jtjkƒ t||ƒ d S )Nr"   rˆ   r   r   y        333333@)r	   r:   Ú
longdoubler   rG   r   r   )r@   r‹   Zgrid128Z
grid128c_aZ
grid128c_brB   rB   rC   Útest_accepts_longdouble  s(      ÿ
"  ÿz TestGrid.test_accepts_longdoublec                 C   sø   t tddd…f tddt d¡…f ƒ t tddd… tddt d¡… ƒ tddd… }tddd…f d }t|j|j  koˆtjkn  ƒ t||ƒ tddt d¡… }tddt d¡…f d }t|j|j  koâtj	kn  ƒ t||ƒ d S )Nr"   g333333Ó?y              @y        ffffff
@r   )
r   r	   r:   Ú	complex64r   rG   rŠ   r   Zclongdoubler�   )r@   Zgrid64_aZgrid64_bZ	grid128_aZ	grid128_brB   rB   rC   Útest_accepts_npcomplexfloating  s      ÿ ÿ"
"z'TestGrid.test_accepts_npcomplexfloatingN)rj   rk   rl   rD   rv   r{   r~   rm   rn   ro   r‡   rŒ   rŽ   r�   rB   rB   rB   rC   rp   »   s   	þ
rp   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   s`   t td t ddddddg¡ƒ t d¡}t|dd|f }t |ddddddddddddgƒ d S )	N)r   r   r$   r    r&   r%   r   r   r$   r    r&   r%   r   )r   r   r:   r?   ry   )r@   rt   rz   rB   rB   rC   Útest_1d/  s     
zTestConcatenator.test_1dc                 C   s"   t ddd…f }t|jdkƒ d S )Ng333333$@r   rE   Úf8)r   r   rG   ©r@   ÚgrB   rB   rC   Útest_mixed_type5  s    z TestConcatenator.test_mixed_typec                 C   s6   t dt dg¡t dddg¡df }t|jdkƒ d S )Ng333333$Àr   r   r$   r    g      $@r“   )r   r:   r?   r   rG   r”   rB   rB   rC   Útest_more_mixed_type9  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   rO   y              Y@)éd   )r   r   r   r:   r�   r”   rB   rB   rC   Ú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&   rE   )rE   r&   )r:   ÚrandomÚrandr   r   r   r   )r@   rt   rz   rx   rB   rB   rC   Útest_2dF  s    zTestConcatenator.test_2dc                 C   sp   t tdt d¡df dddgƒ t tdddgt d¡f ddddgƒ t tt d¡dddgf ddddgƒ d S )Nr   r   r   r$   )r   r   r:   r?   rV   rB   rB   rC   r]   R  s     &zTestConcatenator.test_0dN)	rj   rk   rl   r’   r–   r—   r™   r�   r]   rB   rB   rB   rC   r‘   .  s   	r‘   c                   @   s   e Zd Zdd„ ZdS )ÚTestNdenumeratec                 C   s4   t  ddgddgg¡}ttt|ƒƒddddgƒ d S )	Nr   r   r$   r    ))r   r   r   ))r   r   r   )r   r$   ))r   r   r    )r:   r?   r   Úlistr   ©r@   re   rB   rB   rC   rD   Y  s    
ÿzTestNdenumerate.test_basicN)rj   rk   rl   rD   rB   rB   rB   rC   rž   X  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    rB   rB   rC   Ú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    rB   rB   rC   Útest_simple_1f  s    :z!TestIndexExpression.test_simple_1N)rj   rk   rl   r£   r¤   rB   rB   rB   rC   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   rF   )r:   r   Úranger   rG   rP   r?   r‰   r    rB   rB   rC   r£   n  s    zTestIx_.test_regression_1c                    s�   d}t tjfD ]|‰ tj‡ fdd„|D ƒŽ }tt||ƒƒD ]P\‰\}}t|jˆ |ƒ tt	‡fdd„t|jƒD ƒƒƒ tt 
|jtj¡ƒ q8qd S )N)r    r&   r$   r   c                    s   g | ]}ˆ |ƒ‘qS rB   rB   )rd   Úsz)ÚfuncrB   rC   Ú
<listcomp>~  s     z0TestIx_.test_shape_and_dtype.<locals>.<listcomp>c                 3   s"   | ]\}}|ˆ kr|d kV  qdS )r   NrB   )rd   ÚjÚsh)ÚkrB   rC   rf   �  s      z/TestIx_.test_shape_and_dtype.<locals>.<genexpr>)r¦   r:   r¢   r   Ú	enumerater|   r   r   r   rh   Z
issubdtyperG   Úinteger)r@   ÚsizesZarraysre   r§   rB   )r¨   r¬   rC   Útest_shape_and_dtypez  s     zTestIx_.test_shape_and_dtypec                 C   s0   ddddg}t  |¡\}tt  |¡d |ƒ d S )NTFr   )r:   Znonzeror   r   )r@   Zbool_aZint_arB   rB   rC   Ú	test_bool„  s    zTestIx_.test_boolc                 C   s&   dddgdddgg}t ttj|ƒ d S )Nr   r   r$   r    r&   r%   )r   r>   r:   r   )r@   Zidx2drB   rB   rC   Útest_1d_only‰  s    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   )r@   Zlength_of_vectorrY   ÚoutrB   rB   rC   Útest_repeated_input�  s    

zTestIx_.test_repeated_inputN)rj   rk   rl   r£   r°   r±   r²   r´   rB   rB   rB   rC   r¥   m  s
   
r¥   c               
   C   sN   t jt  dddgg¡ddt  dddgg¡f } t| ddddddddggƒ d S )Nr   r   r$   r   r    r&   r%   )r:   Zc_r?   r   )re   rB   rB   rC   Útest_c_—  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   sB   t  dt¡}t|dƒ t|t  dddgdddgdddgg¡ƒ d S )N)r$   r$   r&   r   ©r:   r`   rJ   r   r   r?   r    rB   rB   rC   rD   �  s    
 þÿzTestFillDiagonal.test_basicc                 C   sz   t  dt¡}t|dƒ t|t  dddgdddgdddgdddgdddgdddgdddgdddgdddgdddgg
¡ƒ d S )NrH   r&   r   r·   r    rB   rB   rC   Útest_tall_matrix¦  s     
 ÷ÿz!TestFillDiagonal.test_tall_matrixc                 C   s|   t  dt¡}t|ddƒ t|t  dddgdddgdddgdddgdddgdddgdddgdddgdddgdddgg
¡ƒ d S )NrH   r&   Tr   r·   r    rB   rB   rC   Útest_tall_matrix_wrap¶  s      ÷ÿz&TestFillDiagonal.test_tall_matrix_wrapc                 C   sl   t  dt¡}t|dƒ t|t  ddddddddddg
ddddddddddg
ddddddddddg
g¡ƒ d S )N)r$   rE   r&   r   r·   r    rB   rB   rC   Útest_wide_matrixÆ  s    
 þÿz!TestFillDiagonal.test_wide_matrixc                 C   sF   t  dt¡}t|dƒ t  dddg¡}tt  |dk¡||||fƒ d S )N)r$   r$   r$   r$   r    r   r   r   )r:   r`   rJ   r   r?   r   Úwhere)r@   re   ÚirB   rB   rC   Útest_operate_4d_arrayÏ  s    
z&TestFillDiagonal.test_operate_4d_arrayc              	   C   s0   t  dt¡}ttdƒ� t|dƒ W 5 Q R X d S )Nr$   úat least 2-dr&   ©r:   r`   rJ   r   r>   r   r    rB   rB   rC   Útest_low_dim_handlingÕ  s    z&TestFillDiagonal.test_low_dim_handlingc              	   C   s0   t  dt¡}ttdƒ� t|dƒ W 5 Q R X d S )N)r$   r$   r'   r$   úequal lengthr   r¿   r    rB   rB   rC   Útest_hetero_shape_handlingÛ  s    z+TestFillDiagonal.test_hetero_shape_handlingN)
rj   rk   rl   rD   r¸   r¹   rº   r½   rÀ   rÂ   rB   rB   rB   rC   r¶   œ  s   		r¶   c                  C   sÈ   t dƒ} t ddddgddddgd	d
ddgddddgg¡}d|| < t|t ddddgddddgd	d
ddgddddg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'   r8   r9   rE   rs   r7   r/   é   é   é   r˜   )r   r   r   r   )r   r:   r?   r   r`   rJ   )Zdire   Zd3rB   rB   rC   Útest_diag_indicesã  s8    


ý 


ýÿ
 
ÿÿþÿ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 )Nr5   r    )r:   r›   r   r   r¢   )r@   rY   Úrrz   rB   rB   rC   Útest_diag_indices_from  s    z*TestDiagIndicesFrom.test_diag_indices_fromc              	   C   s,   t  d¡}ttdƒ� t|ƒ W 5 Q R X d S )Nr'   r¾   )r:   ry   r   r>   r   r\   rB   rB   rC   Útest_error_small_input  s    
z*TestDiagIndicesFrom.test_error_small_inputc              	   C   s.   t  dt¡}ttdƒ� t|ƒ W 5 Q R X d S )N)r$   r$   r   r$   rÁ   )r:   r`   rJ   r   r>   r   r\   rB   rB   rC   Útest_error_shape_mismatch  s    z-TestDiagIndicesFrom.test_error_shape_mismatchN)rj   rk   rl   rÉ   rÊ   rË   rB   rB   rB   rC   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 rB   rB   )rd   ZixÚerB   rB   rC   r©     s     z test_ndindex.<locals>.<listcomp>)r   r   r$   )r$   rB   r   )rŸ   r   r   r:   r`   r   r   )rY   r…   rB   rB   rC   Útest_ndindex  s    


rÍ   )"rm   Únumpyr:   Znumpy.testingr   r   r   r   r   r   r   Znumpy.lib.index_tricksr	   r
   r   r   r   r   r   r   r   r   r   r   rp   r‘   rž   r¡   r¥   rµ   r¶   rÆ   rÇ   rÍ   rB   rB   rB   rC   Ú<module>   s   $4 .s**G