a
    ç´«jN=  ã                   @   sè   d dl Z d dlmZ d dlZd dlm  mZ d dlm	Z	 ej
Z
G dd„ dƒZedkrädZde Zd	\ZZed
dƒD ]nZde Ze  ee¡ eed ¡Ze e¡Zede d ƒ eede ƒƒ eded  d›ded
 d›�ƒ qtdS )é    N)Úreduce)Úbuild_err_msgc                   @   sð   e Zd Zdd„ Zd dd„Zd!dd„Zejd	d
�dd„ ƒZejd	d
�dd„ ƒZ	ejd	d
�dd„ ƒZ
ejd	d
�dd„ ƒZejd	d
�dd„ ƒZejd	d
�dd„ ƒZejd	d
�dd„ ƒZejd	d
�dd„ ƒZejd	d
�dd„ ƒZejd	d
�dd„ ƒZdS )"ÚModuleTesterc                 C   s  || _ |j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j	| _	t
| _
|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _z|j| _W n tyü   |jj| _Y n0 g | _d S ©N)ÚmoduleÚallequalÚarangeÚarrayÚconcatenateÚcountÚequalÚfilledÚgetmaskZgetmaskarrayÚidÚinnerÚ	make_maskÚmaskedÚmasked_arrayÚmasked_valuesÚmask_orÚnomaskÚonesÚouterÚrepeatÚresizeÚsortÚtakeÚ	transposeÚzerosZMaskTypeÚumathÚAttributeErrorÚcoreZ	testnames)Úselfr   © r#   úX/var/www/html/laksyashrimp/venv/lib/python3.9/site-packages/numpy/ma/timer_comparison.pyÚ__init__   s@    zModuleTester.__init__Ú Tc              
   C   sH  |   |¡}|   |¡}|  |  |¡|  |¡¡}	|   | j||	d�|¡}|   | j||	d�|¡}|jjdkr¤| tj¡}t	|tj
ƒr–|jdkr–d|t |¡< nt |¡r¤d}|jjdkrð| tj¡}t	|tj
ƒrâ|jdkrâd|t |¡< nt |¡rðd}�z|jdk�p|jdk�p|j|jk}
|
�sVt||g|d|j› d|j› d� |d	d
�}|
�sVJ |ƒ‚|||ƒ}|	| ju�r€|�r€| j||	d�}t	|tƒ�r˜|}
dg}n| ¡ }| ¡ }
| ¡ }|
�südd| d¡ t|ƒ  }t||g|d|f  |d	d
�}|
�süJ |ƒ‚W nD t�yB } z*t||g||d	d
�}t|ƒ|‚W Y d}~n
d}~0 0 dS )zZ
        Assert that a comparison of two masked arrays is satisfied elementwise.

        ©ÚmaskÚOé   r   r#   z	
(shapes z, z
 mismatch)©ÚxÚy)ÚheaderÚnameséd   g      Y@z
(mismatch %s%%)N)r   r   r   r   ÚdtypeÚcharÚastypeÚnpÚfloat64Ú
isinstanceZndarrayÚsizeÚisnanÚshaper   r   ÚboolZravelÚallÚtolistr   ÚlenÚ
ValueError)r"   Z
comparisonr,   r-   Úerr_msgr.   Z
fill_valueÚxfZyfÚmZcondÚmsgÚvalZreducedÚmatchÚer#   r#   r$   Úassert_array_compare/   sd    



$ÿü
ÿüz!ModuleTester.assert_array_comparec                 C   s   | j | j|||dd� dS )zH
        Checks the elementwise equality of two masked arrays.

        zArrays are not equal)r?   r.   N)rF   r   )r"   r,   r-   r?   r#   r#   r$   Úassert_array_equalf   s    ÿzModuleTester.assert_array_equalÚignore)r;   c                 C   sH   t  ddddtd dddddddg¡}g d	¢}| j||d
�}|d  dS )ú!
        Tests creation

        ç      ð?ç       Àç       @ç      @ç      @ç      $Àç      $@ç      @©r*   r   r   r   r   r   r*   r   r   r   r   r   r'   r   N)r4   r	   Úpir   )r"   r,   rA   Úxmr#   r#   r$   Útest_0n   s    &zModuleTester.test_0c           	      C   s   t  ddddtd dddddddg¡}t  g d	¢¡}g d
¢}g d¢}| j||d�}| j||d�}t  |d|¡}| d¡ ||  d¡ ¡ sŽJ ‚|j}|j	t
dd„ |ƒks¬J ‚|  |¡t|ƒt
dd„ |ƒ ksÐJ ‚dD ]F}||_||_||_||_||_|  |¡t|ƒt
dd„ |ƒ ksÔJ ‚qÔdS )rI   rJ   rK   rL   rM   rN   rO   rP   rQ   )rN   ç        rQ   rL   g      ð¿g      ÀrV   rO   rP   rJ   rV   rQ   rR   )r   r   r*   r   r   r*   r*   r   r   r   r   r*   r'   g@Œµx¯Dr   c                 S   s   | | S r   r#   r+   r#   r#   r$   Ú<lambda>Š   ó    z%ModuleTester.test_1.<locals>.<lambda>c                 S   s   | | S r   r#   r+   r#   r#   r$   rW   ‹   rX   ))é   é   )é   é   c                 S   s   | | S r   r#   r+   r#   r#   r$   rW   “   rX   N)r4   r	   rS   r   ÚwhereZset_fill_valuer   Úanyr9   r7   r   r   r=   )	r"   r,   r-   Úm1Úm2rT   Zymr@   Úsr#   r#   r$   Útest_1y   s&    &
$zModuleTester.test_1c           	      C   sÂ  t  g d¢¡}| j|g d¢d�}| j|g d¢d�}|  |¡}t|ƒ t|ƒ t|d ƒt|d ƒu shJ ‚|d |d ks|J ‚d|d< d|d< |  ||¡ d|dd	…< d|dd	…< | j|d< | j|dd	…< ||d
d
…< | j|d< |  g d¢g d¢¡|d
d
…< |  g d¢g d¢¡|d
d
…< t  d¡d }|  	|d¡}|  g d¢t
¡}t  g d¢t
¡}|d  |d  |dd… jdk�sxJ ‚g d¢}|  |¡}|  |¡}||u �s¢J ‚| j|dd�}||u�s¾J ‚d
S )z2
        Tests conversions and indexing.

        )r*   r\   rY   rZ   ©r*   r   r   r   r'   )r   r*   r   r*   r*   é	   r\   éc   rZ   N)r*   r\   rZ   rY   )r   r*   r*   r   é   rJ   rQ   )r*   Zhellor\   rZ   )r   )r   r   r*   r   r   )Úcopy)r4   r	   ÚstrÚreprÚtyperG   r   r   r   r   Úobjectr9   r   )	r"   Úx1Zx2Zx3Úx4ÚnrA   r`   Úm3r#   r#   r$   Útest_2•   s@    




zModuleTester.test_2c                 C   sÒ   |   d¡}| j|d< |  |d¡}|  |  ||g¡|¡s:J ‚|  |  |¡g d¢¡sTJ ‚| j|ddd�}|  |g d¢¡ | j|ddd�}|  ||¡s”J ‚|jddd�}|  ||¡s²J ‚| dd¡}|  ||¡sÎJ ‚d	S )
z&
        Tests resize/repeat

        rY   r\   )é   )r   r   r*   r   r   r   r*   r   )r\   r\   r\   r\   r   ©Úaxis)r   r   r*   r*   r\   r\   rZ   rZ   N)r   r   r   r   r
   r   r   rG   )r"   rm   Zy4Zy5Zy6Zy7Zy8r#   r#   r$   Útest_3À   s    

zModuleTester.test_3c              	   C   sF  |   d¡}t  d¡}| j|dd…< | ddd¡}| ddd¡}|  t |d¡|  |d¡¡s^J ‚|  t |dd¡|  |dd¡¡s‚J ‚|  t |  |d	¡|  |d	¡¡|  ||¡¡s²J ‚|  t 	|  |d	¡|  |d	¡¡|  	||¡¡sâJ ‚|  
g d
¢t¡}| j|d< |  |g d¢¡}|d	 dk�sJ ‚|d dk�s0J ‚|d dk�sBJ ‚dS )zB
        Test of take, transpose, inner, outer products.

        é   rf   r[   r\   rZ   rY   )r\   r   r*   r*   r   )Úabcr*   Údefr\   rZ   )r   rZ   rY   rv   N)r   r4   r   Úreshaper   r   r   r   r   r   r	   rk   )r"   r,   r-   Útr#   r#   r$   Útest_4Ô   s&    

 $
ÿ
ÿ
zModuleTester.test_4c                 C   s  |   d¡}|   d¡}|   d¡}| j|d< |d7 }|  ||d ¡sDJ ‚|d7 }|  ||d ¡s`J ‚|   d¡}|   d¡}| j|d< |d8 }|  ||d ¡sšJ ‚|d8 }|  ||d ¡s¶J ‚|   d¡d }|   d¡d }| j|d< |d9 }|  ||d ¡søJ ‚|d9 }|  ||d ¡�sJ ‚|   d¡d }|   d¡d }| j|d< |d }|  ||¡�sVJ ‚|d }|  ||¡�spJ ‚|   d¡d }|   d¡d }| j|d< |d }|  ||d ¡�s´J ‚||   d¡ }|  ||  d¡¡ |   d¡ tj¡}|   d¡}| j|d< |d7 }|  ||d ¡�sJ ‚dS )z*
        Tests inplace w/ scalar

        é
   r\   r*   rJ   rL   )r{   N)r   r   r   rG   r   r3   r4   r5   )r"   r,   r-   rT   r#   r#   r$   Útest_5ì   sR    











zModuleTester.test_5c                 C   sN  | j dtjd�}|   d¡}| j dtjd�}| j|d< |j}| j dtjd�}| j|d< ||7 }||7 }|  ||| ¡sxJ ‚|  ||| ¡sŒJ ‚|  |j|  ||j¡¡s¨J ‚| j dtjd�}| j dtjd�}| j|d< |j}| j dtjd�}| j|d< ||8 }||8 }|  ||| ¡�sJ ‚|  ||| ¡�s.J ‚|  |j|  ||j¡¡�sLJ ‚| j dtjd�}| j dtjd�}| j|d< |j}| j dtjd�}| j|d< ||9 }||9 }|  ||| ¡�s¼J ‚|  ||| ¡�sÒJ ‚|  |j|  ||j¡¡�sðJ ‚| j dtjd�}| j dtjd�}| j|d< |j}| j dtjd�}| j|d< || }|| }dS )z)
        Tests inplace w/ array

        r{   )r1   r\   éÿÿÿÿN)r   r4   r5   r   r(   r   r   )r"   r,   r-   rT   rA   Úar#   r#   r$   Útest_6!  sT    








zModuleTester.test_6c              	   C   sè   | j dddtd gd ddgdgd  d�| j dddtd gd ddgdgd  d�f}dD ]†}zt| j|ƒ}W n tyŒ   tt|ƒ}Y n0 t| j|ƒ}|d	|j… }||Ž }||Ž }|  | 	d¡| 	d¡|¡ |  |j
|j
¡ q\d	S )
zTests ufuncrJ   r   r}   r\   r*   r[   r'   )ÚsqrtÚlogÚlog10ÚexpÚ	conjugateN)r	   rS   Úgetattrr   r    Úfromnumericr   ZninrG   r   Z_mask)r"   ÚdÚfZufÚmfÚargsÚurÚmrr#   r#   r$   Útest_7U  s    **ÿzModuleTester.test_7c              	   C   sÀ  | j g d¢g d¢d�}|  d| j|dd�¡ |  d| j|g d¢d�¡ | j|g d¢d	d
�\}}|  d|¡ |dksvJ ‚| j|d d …< | j|dd�| ju sœJ ‚| j g d¢g d¢d�}| dd¡}| j|d d …d	f< |  | j|dd�ddg¡ | j|d	d�d | ju �sJ ‚|  ddg| j|dd�¡ | j|dd	d�\}}|  |ddg¡ g d¢}g d¢g d¢g}|  d¡}|  | j|dd�d¡ |  | j|d|d�d¡ |   |  d¡d|  d¡ g¡}|  |  |d ¡tj t d¡¡d d ¡ |  | j|dd�t d¡d d ¡ |  | j|d	d�| j|dd�| j|dd�d g¡ |  | j|d |d�d¡ |  | j|d|d�g d¢¡ |  | j|d	d�| j|dd�| j|dd�d g¡ |  	d¡}g d¢}	g d¢g d¢g}
|  
d¡}g d¢}|  | j|  ||¡dd�d¡ |  | j|  ||	¡dd�d¡ |  | j|  ||¡dd�d¡ |  |  | j|  ||¡dd�¡d¡ |  ||
¡}|  |  |d ¡d¡ |  | j|dd�g d¢¡ |  | j|d	d�ddg¡ |  | j|d|d�g d¢¡ d S )N)rV   rJ   rL   rQ   rc   r'   rL   r   rr   )rJ   rJ   rL   rJ   )Úweightsr*   )rŽ   ÚreturnedrM   r\   rV   )rs   r�   rJ   )r   r*   r*   r*   r*   r   )r*   r   r   r   r   r*   r[   g      @)rs   rŽ   rQ   g      (@g«ªªªªª
@)rV   rJ   rL   rQ   rM   rP   )r   r   r*   r*   r   r   )r   r*   r*   r*   r*   r*   )rV   rJ   ç     ÀX@r�   rM   g      @rN   )rV   rJ   r�   r�   rM   rP   )r	   rG   Zaverager   rx   r   r4   Úaddr   r   r   r   r   )r"   ZottÚresultZwtsZw1Zw2r,   r-   r_   r`   ro   Zm4Zm5Úzr#   r#   r$   Útest_99x  sT    
*$22

$zModuleTester.test_99c                 C   s*   |   d¡}| j|dd…< | ddd¡}d S )Nru   rf   r[   r\   rZ   rY   )r   r   rx   )r"   r,   r#   r#   r$   Útest_A¦  s    
zModuleTester.test_AN)r&   r&   T)r&   )Ú__name__Ú
__module__Ú__qualname__r%   rF   rG   r4   ZerrstaterU   rb   rp   rt   rz   r|   r   r�   r”   r•   r#   r#   r#   r$   r      s2   "  ÿ
7







*





4

3

"

-
r   Ú__main__zNfrom __main__ import ModuleTester 
import numpy
tester = ModuleTester(module)
zimport numpy.ma.core as module
)r{   r{   r*   rq   ztester.test_%i()r{   z#%iz2..................................................zModuleTester.test_%i.__doc__zcore_current : z.3fz - )ZtimeitÚ	functoolsr   Únumpyr4   Znumpy._core.fromnumericZ_corer†   Znumpy.testingr   rS   r   r–   Z
setup_baseZ	setup_curZnrepeatZnloopÚrangeÚiÚfuncÚTimerr   Úcurr   ÚprintÚevalr#   r#   r#   r$   Ú<module>   s(      $
