o
    V=ºiL  ã                   @   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   éþ   )é   é^   )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   úgC:\Users\psant\Downloads\PAF backend\school\venv\Lib\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'   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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   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   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   rG   )r'   r9   r9   r   r   r'   r,   r-   )r   r%   r   r   r:   r'   )r'   r9   rF   rF   r   )r;   Zint16Zuint16Zint32Zuint32rR   Zuint64r@   r   r>   r<   )rA   rH   Zcoordsr   ZuncoordsrC   rC   rD   Ú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(   r8   r7   r2   )r   r   r&   r   )r7   Úraiser1   rV   )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   rV   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   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   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   rG   r`   r%   c                 s   s   � | ]}|j d kV  qdS )ra   N)r   )Ú.0ÚarC   rC   rD   Ú	<genexpr>¶   s   € zATestRavelUnravelIndex.test_empty_array_unravel.<locals>.<genexpr>r   )r;   r<   rb   rQ   ÚlenÚallr   r?   )rA   rc   rC   rC   rD   Útest_empty_array_unravel²   s   
"ÿz.TestRavelUnravelIndex.test_empty_array_unravelN)Ú__name__Ú
__module__Ú__qualname__rE   rL   rT   rU   rX   r]   r_   ÚpytestÚmarkÚparametrizerd   rj   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   rf   Ú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   rr   éþÿÿÿr   r#   gš™™™™™É?)r   rF   rF   )r   rs   rs   r   rF   Údrt   rs   )r	   r   r   r   r;   Úonesr   )rA   Úcry   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||ƒ q"d S )Nr    r   rr   rx   r   )r	   r
   r;   Zbroadcast_arraysÚzipr   )rA   Z	grid_fullZgrid_sparseZgrid_broadcastÚfru   rC   rC   rD   Útest_sparseÛ   s   
ÿzTestGrid.test_sparsezstart, stop, step, expected)NrF   rr   )éÈ   rF   )iöÿÿÿrs   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   Z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;   Ú	complex64rW   rC   rC   rD   Útest_accepts_npcomplexfloating  s   "ÿÿz'TestGrid.test_accepts_npcomplexfloatingN)rk   rl   rm   rE   rw   r|   r   rn   ro   rp   r‡   r‰   r‹   rC   rC   rC   rD   rq   »   s    	þ
rq   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@   rz   )rA   ru   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  ó   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   ru   r{   ry   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%   rY   )r   r   r;   r@   rW   rC   rC   rD   r_   0  s    $zTestConcatenator.test_0dN)	rk   rl   rm   r�   r‘   r“   r•   r™   r_   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   rf   rC   rC   rD   rE   7  s   ÿzTestNdenumerate.test_basicN)rk   rl   rm   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)rk   rl   rm   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 ](\‰\}}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 rC   rC   )re   Úsz)ÚfuncrC   rD   Ú
<listcomp>\  ó    z0TestIx_.test_shape_and_dtype.<locals>.<listcomp>c                 3   s$   � | ]\}}|ˆ kr|d kV  qdS )r   NrC   )re   ÚjÚsh)ÚkrC   rD   rg   _  s   €" z/TestIx_.test_shape_and_dtype.<locals>.<genexpr>)r£   r;   rŸ   r   Ú	enumerater}   r   r   r   ri   Z
issubdtyperH   Úinteger)rA   ÚsizesZarraysrf   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 )NrY   ©r!   r'   r&   )r   r?   r;   r   )rA   Zidx2drC   rC   rD   Ú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   )rA   Zlength_of_vectorr[   ÚoutrC   rC   rD   Útest_repeated_inputk  s   

zTestIx_.test_repeated_inputN)rk   rl   rm   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 )NrY   r   r°   )r   r   r%   r   r   r!   r'   r&   )r;   Zc_r@   r   )rf   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   ó<   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;   rb   rK   r   r   r@   r�   rC   rC   rD   rE   {  ó   
þÿ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   r¶   )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¤  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;   rb   rK   r   r@   r   Úwhere)rA   rf   ÚirC   rC   rD   Ú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;   rb   rK   r   r?   r   r�   rC   rC   rD   Útest_low_dim_handling³  s   "ÿz&TestFillDiagonal.test_low_dim_handlingc                 C   rÃ   )N)r%   r%   r(   r%   úequal lengthr   rÅ   r�   rC   rC   rD   Útest_hetero_shape_handling¹  s   "ÿz+TestFillDiagonal.test_hetero_shape_handlingN)
rk   rl   rm   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   rt   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   rb   rK   )Zdirf   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   sB   t  d¡}ttdƒ� t|ƒ W d   ƒ d S 1 sw   Y  d S )Nr(   rÄ   )r;   rz   r   r?   r   r^   rC   rC   rD   Ú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;   rb   rK   r   r?   r   r^   rC   rC   rD   Útest_error_shape_mismatchê  s   
"ÿz-TestDiagIndicesFrom.test_error_shape_mismatchN)rk   rl   rm   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   )re   ÚixÚerC   rC   rD   r¦   ò  r§   z test_ndindex.<locals>.<listcomp>rY   )r%   rC   r   )rœ   r   r   r;   rb   r   r   )r[   r†   rC   rC   rD   Útest_ndindexð  s   


rÔ   )"rn   Z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   rq   rŒ   r›   rž   r¢   r´   rµ   rÌ   rÍ   rÔ   rC   rC   rC   rD   Ú<module>   s     $4 .Q**G