a
    ³ÐOc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 sR0    Y  ttƒ� tjddd� W d   ƒ n1 sˆ0    Y  ttƒ� tjddd	� W d   ƒ n1 s¾0    Y  ttƒ� tjddd
� W d   ƒ n1 sô0    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   éþ   )é   é^   )Z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!   )r1   Úwrap)é   r0   r0   )r%   r   r!   r   )r&   r(   é   é	   iU  )r   ÚnpÚunravel_indexr   Ú	TypeErrorÚravel_multi_indexÚ
ValueErrorÚarray)ÚselfÚarr© rC   úX/var/www/html/gsl.tools/lib/python3.9/site-packages/numpy/lib/tests/test_index_tricks.pyÚ
test_basic   sb    ÿþ
,
,
,
,ÿÿÿÿÿþ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'   rC   ©Údtype©rF   r%   Úabc)r'   r%   )r   r=   r;   r<   r@   r   Úintr>   )rA   Zmsg1Zmsg2rC   rC   rD   Ú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   r5   r   iK	  i  r   )r*   r(   éx   é$   i’
  r9   r&   l   ¼zá l   nm )l   ÿÿ l       r,   r-   )
r;   ÚintpÚint64r   r>   r   r?   r<   ZiinfoÚmax)rA   rB   Z	dummy_arrZhalf_maxrC   rC   rD   Útest_big_indicesZ   s.    ÿ
þÿÿÿÿz&TestRavelUnravelIndex.test_big_indicesc                 C   sr  t jt jt jt jt jt jfD �]N}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   rG   )r'   r9   r9   r   r   r'   r,   r-   )r   r%   r   r   r:   r'   )r'   r9   rF   rF   r   )r;   Úint16Zuint16Úint32Zuint32rR   Zuint64r@   r   r>   r<   )rA   rH   Zcoordsr   ZuncoordsrC   rC   rD   Útest_dtypesr   s8    ÿ
ÿÿþ  ÿ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(   r8   r7   r2   )r   r   r&   r   )r7   Úraiser1   rX   )r   r   r   r   )r   r;   r>   r   r?   ©rA   rC   rC   rD   Ú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   ÚflagsZ	writeable)rA   ÚxÚyrC   rC   rD   Ú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   rC   z0d arrayzout of boundsr   )r;   r<   r   r   r?   ©rA   r]   rC   rC   rD   Útest_0dŸ   s    
ÿzTestRavelUnravelIndex.test_0dr3   )r1   r7   rX   c                 C   sr   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   ƒ n1 sd0    Y  d S )N)r%   r   rG   ©r   r   r   r2   ©r   )r%   r   )r;   r>   ÚzerosrQ   r   r   r?   )rA   r3   ÚresrC   rC   rD   Útest_empty_array_ravel¨   s    ÿ
ÿz,TestRavelUnravelIndex.test_empty_array_ravelc                 C   sx   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   ƒ n1 sj0    Y  d S )Nr   rG   rb   r%   c                 s   s   | ]}|j d kV  qdS )rc   N)r   )Ú.0ÚarC   rC   rD   Ú	<genexpr>¶   ó    zATestRavelUnravelIndex.test_empty_array_unravel.<locals>.<genexpr>r   )r;   r<   rd   rQ   ÚlenÚallr   r?   )rA   re   rC   rC   rD   Útest_empty_array_unravel²   s
    
z.TestRavelUnravelIndex.test_empty_array_unravelN)Ú__name__Ú
__module__Ú__qualname__rE   rL   rT   rW   rZ   r_   ra   ÚpytestÚmarkÚparametrizerf   rm   rC   rC   rC   rD   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#   )rF   )é   r   é   ggfffffþ?gÇqÇqÌ?)r	   r   r   r   )rA   rh   ÚbrC   rC   rD   rE   ¼   s    zTestGrid.test_basicc                 C   s8   t jdddd�\}}t|dƒ t|tddd… dƒ d S )Nr   rF   T)Zretstepg9/§àåÄ?y              I@r0   )r;   Zlinspacer   r   r	   )rA   r^   ÚstrC   rC   rD   Ú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   ru   éþÿÿÿr   r#   gš™™™™™É?)r   rF   rF   )r   rv   rv   r   rF   Údrw   rv   )r	   r   r   r   r;   Úonesr   )rA   Úcr|   rC   rC   rD   Ú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   ru   r{   r   )r	   r
   r;   Zbroadcast_arraysÚzipr   )rA   Z	grid_fullZgrid_sparseZgrid_broadcastÚfrx   rC   rC   rD   Útest_sparseÛ   s
    
zTestGrid.test_sparsezstart, stop, step, expected)NrF   ru   )éÈ   rF   )iöÿÿÿrv   N)i  é   c                 C   sJ   t |||…|||…f }t |||… }t|j|d ƒ t|j|d ƒ d S )Nr   r   )r	   r   Úsize)rA   ÚstartÚstopÚstepÚexpectedZgridZ
grid_smallrC   rC   rD   Ú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   rH   Úfloat64r   )rA   Zgrid64Zgrid32rC   rC   rD   Ú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;   Ú	complex64rY   rC   rC   rD   Útest_accepts_npcomplexfloating  s    "ÿÿz'TestGrid.test_accepts_npcomplexfloatingN)rn   ro   rp   rE   rz   r   r‚   rq   rr   rs   rŠ   r�   r�   rC   rC   rC   rD   rt   »   s   	þ
rt   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;   r@   r}   )rA   rx   r~   rC   rC   rD   Útest_1d  s    
zTestConcatenator.test_1dc                 C   s"   t ddd…f }t|jdkƒ d S )Ng333333$@r   rF   Úf8)r   r   rH   ©rA   ÚgrC   rC   rD   Útest_mixed_type  s    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;   r@   r   rH   r“   rC   rC   rD   Ú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   rP   y              Y@)éd   )r   r   r   r;   rŽ   r“   rC   rC   rD   Ú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'   rF   )rF   r'   )r;   ÚrandomÚrandr   r   r   r   )rA   rx   r~   r|   rC   rC   rD   Ú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%   r[   )r   r   r;   r@   rY   rC   rC   rD   ra   0  s     zTestConcatenator.test_0dN)	rn   ro   rp   r‘   r•   r–   r˜   rœ   ra   rC   rC   rC   rD   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;   r@   r   Úlistr   ©rA   rh   rC   rC   rD   rE   7  s    ÿzTestNdenumerate.test_basicN)rn   ro   rp   rE   rC   rC   rC   rD   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    rC   rC   rD   Ú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    rC   rC   rD   Útest_simple_1D  s    :z!TestIndexExpression.test_simple_1N)rn   ro   rp   r£   r¤   rC   rC   rC   rD   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   rG   )r;   r   Úranger   rH   rQ   r@   r‹   r    rC   rC   rD   r£   L  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 rC   rC   )rg   Úsz)ÚfuncrC   rD   Ú
<listcomp>\  rj   z0TestIx_.test_shape_and_dtype.<locals>.<listcomp>c                 3   s"   | ]\}}|ˆ kr|d kV  qdS )r   NrC   )rg   ÚjÚsh)ÚkrC   rD   ri   _  rj   z/TestIx_.test_shape_and_dtype.<locals>.<genexpr>)r¦   r;   r¢   r   Ú	enumerater€   r   r   r   rl   Z
issubdtyperH   Úinteger)rA   ÚsizesZarraysrh   r§   rC   )r¨   r¬   rD   Útest_shape_and_dtypeX  s     zTestIx_.test_shape_and_dtypec                 C   s,   g d¢}t  |¡\}tt  |¡d |ƒ d S )N)TFTTr   )r;   Znonzeror   r   )rA   Zbool_aZint_arC   rC   rD   Ú	test_boolb  s    zTestIx_.test_boolc                 C   s"   g d¢g d¢g}t ttj|ƒ d S )Nr[   ©r!   r'   r&   )r   r?   r;   r   )rA   Zidx2drC   rC   rD   Útest_1d_onlyg  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   )rA   Zlength_of_vectorr]   ÚoutrC   rC   rD   Útest_repeated_inputk  s    

zTestIx_.test_repeated_inputN)rn   ro   rp   r£   r°   r±   r³   rµ   rC   rC   rC   rD   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 )Nr[   r   r²   )r   r   r%   r   r   r!   r'   r&   )r;   Zc_r@   r   )rh   rC   rC   rD   Ú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   s<   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;   rd   rK   r   r   r@   r    rC   rC   rD   rE   {  s    
þÿ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 )NrI   r'   r¸   r¹   rº   ©r   r   r   r»   r    rC   rC   rD   Ú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 )NrI   r'   Tr¸   r¹   rº   r¼   r»   r    rC   rC   rD   Útest_tall_matrix_wrap”  s    ÷ÿz&TestFillDiagonal.test_tall_matrix_wrapc                 C   s<   t  dt¡}t|dƒ t|t  g d¢g d¢g d¢g¡ƒ d S )N)r%   rF   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    rC   rC   rD   Útest_wide_matrix¤  s    
þÿ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;   rd   rK   r   r@   r   Úwhere)rA   rh   ÚirC   rC   rD   Útest_operate_4d_array­  s    
z&TestFillDiagonal.test_operate_4d_arrayc                 C   sD   t  dt¡}ttdƒ� t|dƒ W d   ƒ n1 s60    Y  d S )Nr%   úat least 2-dr'   ©r;   rd   rK   r   r?   r   r    rC   rC   rD   Útest_low_dim_handling³  s    z&TestFillDiagonal.test_low_dim_handlingc                 C   sD   t  dt¡}ttdƒ� t|dƒ W d   ƒ n1 s60    Y  d S )N)r%   r%   r(   r%   úequal lengthr   rÄ   r    rC   rC   rD   Útest_hetero_shape_handling¹  s    z+TestFillDiagonal.test_hetero_shape_handlingN)
rn   ro   rp   rE   r½   r¾   r¿   rÂ   rÅ   rÇ   rC   rC   rC   rD   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(   r9   )r:   rF   rw   r8   )r0   é   é   é   r—   )r—   r   r%   r!   )r'   r—   r(   r9   )r:   rF   r—   r8   )r0   rÈ   rÉ   r—   r   r%   )r   r   r   r   r   )r   r;   r@   r   rd   rK   )Zdirh   Zd3rC   rC   rD   Ú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 )Nr6   r!   )r;   rš   r   r   r¢   )rA   r]   Úrr~   rC   rC   rD   Útest_diag_indices_fromß  s    z*TestDiagIndicesFrom.test_diag_indices_fromc                 C   s@   t  d¡}ttdƒ� t|ƒ W d   ƒ n1 s20    Y  d S )Nr(   rÃ   )r;   r}   r   r?   r   r`   rC   rC   rD   Útest_error_small_inputå  s    
z*TestDiagIndicesFrom.test_error_small_inputc                 C   sB   t  dt¡}ttdƒ� t|ƒ W d   ƒ n1 s40    Y  d S )N)r%   r%   r   r%   rÆ   )r;   rd   rK   r   r?   r   r`   rC   rC   rD   Útest_error_shape_mismatchê  s    z-TestDiagIndicesFrom.test_error_shape_mismatchN)rn   ro   rp   rÎ   rÏ   rÐ   rC   rC   rC   rD   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 rC   rC   )rg   ÚixÚerC   rC   rD   r©   ò  rj   z test_ndindex.<locals>.<listcomp>r[   )r%   rC   r   )rŸ   r   r   r;   rd   r   r   )r]   r‰   rC   rC   rD   Útest_ndindexð  s    


rÓ   )"rq   Ú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   rt   r�   rž   r¡   r¥   r¶   r·   rË   rÌ   rÓ   rC   rC   rC   rD   Ú<module>   s   $4 .Q**G